以下帖子提出了一个极其相似的问题:Different data for sharing providers in UIActivityViewController .但我的问题是不同的。
我知道如何使用 itemForActivityType
与不同的 Activity 共享相同类型的不同数据。例如:
- (id) activityViewController:(UIActivityViewController *)activityViewController
itemForActivityType:(NSString *)activityType
{
if ( [activityType isEqualToString:UIActivityTypePostToTwitter] )
return @"This is a #twitter post!";
if ( [activityType isEqualToString:UIActivityTypePostToFacebook] )
return @"This is a facebook post!";
if ( [activityType isEqualToString:UIActivityTypeAirDrop] )
return @"Airdrop message text";
else
return nil;
}
但是,我的问题是:如果我有不同类型的数据要与不同的事件共享,我应该怎么办?。例如,如果我想分享:
- Twitter 上的一个字符串;
- 一组字符串和 Facebook 上的图像;
- Airdrop 图片的实际数据(例如 NSData)。
附言:
我还查看了以下协议(protocol)函数:
- (id)activityViewControllerPlaceholderItem:;
但是,我不能使用它,因为我们不知道这里的 activityType
的值。
最佳答案
您想要创建和共享两个或多个符合 UIActivityItemSource 的对象,其中一个返回字符串,另一个返回图像等。然后,当调用请求项目的委托(delegate)回调时,您检查选择了哪种事件类型(Facebook、邮件、AirDrop 等),并且 ItemSource 的一个或多个返回 nil如果该项目不适用于该事件。确保对于任何选定的事件,至少有一项返回非零值。
你可以看看airdrop sample code获取有关如何实现 UIActivityItemSource
关于ios - 在 UIActivityViewController 中与不同类型共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26551408/