多个 UIActivityViewController 占位符项目?
Posted
技术标签:
【中文标题】多个 UIActivityViewController 占位符项目?【英文标题】:Multiple UIActivityViewController placeholder items? 【发布时间】:2013-12-20 00:36:01 【问题描述】:UIActivityItemSources 似乎只能返回一种占位符项?这看起来很奇怪,因为我有一个 UIActivityItemSource,它可以根据给定的活动返回一个字符串、一个 NSData 对象或一个图像。
真的没有办法返回一种以上的占位符吗? (NSArrays 似乎不起作用。)
(我可以想象一个解决方案,我实例化一堆 UIActivityItemProvider 实例,每个实例都支持上面提到的不同数据类型。但这似乎比应该做的工作多得多......?)
【问题讨论】:
应该有一些更简单的东西,但在 Apple 构建它之前,我使用了这个:***.com/a/70866445/611879 【参考方案1】:如果您在 itemForActivityType
函数中添加跟踪,您将看到该函数将被多次调用。每个可供分享的活动都有一个。
例如 - 如果我想为 Twitter 和邮件/短信共享提供不同的文本,我会这样:
- (id) activityViewController: (UIActivityViewController*) activityViewController itemForActivityType: (NSString*) activityType
if (activityType == UIActivityTypePostToTwitter)
return @"Sharing by Twitter";
else
return @"Other kind of sharing";
更新:
如果您想提供不同类型的数据来共享(例如文本和图像) - 您需要以某种方式编写占位符函数,以便在多次调用时返回两种不同类型的对象。
- (id) activityViewControllerPlaceholderItem: (UIActivityViewController*) activityViewController
static int step = 0;
if (step == 0)
step = 1;
return @"text";
else if (step == 1)
step = 2;
return [UIImage imageNamed: @"image"];
【讨论】:
我不是在说你提到的方法;我说的是-[UIActivityItemSource activityViewControllerPlaceholderItem:]。这是该方法似乎只调用一次,我显然无法打开activityType。谢谢。 实际上在我的测试中activityViewControllerPlaceholderItem
被多次调用。但是你到底想达到什么目的呢?
我的 UIActivityItemSource 根据activityType(数据、图像、文本)返回不同类型的对象。但是没有传入-[UIActivityItemSource activityViewControllerPlaceholderItem:]的activityType参数,那我怎么表达我返回不同种类的数据呢?
但是如果我在占位符中返回一个文本对象,那么我只会在 ActivityViewController 中获得与文本相关的操作。我想要文本操作(Twitter、电子邮件)和图像操作(保存到相机胶卷)等等。这似乎需要我能够通过占位符返回一个字符串和一个图像和一个数据对象,打开activityType。但是没有 activityType 参数。我没有得到什么?谢谢。
他们很可能会在未来更改此实现,但目前看来 - 这是唯一的方法。以上是关于多个 UIActivityViewController 占位符项目?的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用ggplot2同时可视化dataframe的多个数据列实战:多个数据列可视化在同一个图中多个数据列可视化在多个图中(纵向多个子图)