ios - UIActivityItemProvider 返回多个对象还是什么都不返回?

标签 ios swift uiactivityviewcontroller

我有一个 Book 类,我想让我的用户分享他们每本书的进度。为此,我提供了一个 UIActivityViewController,但我想为 Facebook、Twitter 等添加不同的文本,所以我让 Book 符合 UIActivityItemSource 协议(protocol),然后我可以根据 activityType 为其方法返回不同的值。到目前为止一切顺利。

现在我想在用户选择 Facebook 或 Twitter 时也分享一张图片,但对于所有其他选项只分享文本。不过,UIActivityItemSource 中的方法只允许我返回一个对象。要共享字符串和图像,我似乎必须将它们添加为不同的事件项目,但我不知道用户会选择哪个 activityType 来决定我是否应该包含图像还是不是。

那么如何根据 activityType 共享不同数量的各种类和值的对象?

提前致谢

丹尼尔


编辑:现在我正在尝试使用 UIActivityItemProvider 来做到这一点……问题是,有时我只想分享一些文本,有时我也想分享一张图片。所以我的 UIActivityItemProvider 必须有条件地返回多个对象(有时它会返回一个图像,有时它不会)或者我需要使用多个提供者并且有时图像的提供者返回 nil,但是这似乎是不可能的。现在怎么办?

最佳答案

我找到了解决问题的方法。不过这不是很好,所以我不会接受这个答案,但我会把它留在这里以防它对某人有帮助。

我不能让 UIActivityItemProvider 返回 nil 但我可以让它返回一个空字符串,所以这就是我所做的 - 对于 activityTypes 我想要一个图像我返回图像,对于我不返回的图像,我返回一个空字符串。然后我有另一个文本提供者。

不过,也有一些缺点。返回一个空字符串会创建一个新行,这不会破坏交易,但很烦人。此外,始终会有一个字符串项,即使我为我的文本提供程序返回一个空字符串,所以像保存到相机胶卷这样的选项将永远不可用。

我现在就这样做,但如果有人有更好的建议请告诉我。

关于ios - UIActivityItemProvider 返回多个对象还是什么都不返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35470786/

相关文章:

ios - 快速对齐 TextView 中的文本

ios - UIActivityViewController Facebook 分享文字

ios - 按需重新加载 UITabBarController

ios - 在 AVPlayer 中启用/禁用隐藏式字幕

ios - 核心数据错误 SIGABRT : keypath AttributeName not found in entity <NSSQLEntity EntityName id=2>

ios - 如何在 ios 的 UIactivity View Controller 中仅显示 facebook、twitter 和电子邮件( objective-c )?

swift - UIActivityViewController 上的镜像操作,快速,使用波斯语 (iOS 15.4)

ios - NSURLSessionTask 在 session 重新连接后是否保留 taskIdentifier?

ios - 如何在 iOS 11 中将 3d 对象放置在水平面的固定位置?

ios - 避免在 View 中再次获取图像