Tho*_*ard 17 objective-c ios6 uiactivityviewcontroller
我正在使用iOS 6的新方式来分享信息:UIActivityViewController
.要根据媒体(Facebook,Twitter或邮件)选择共享数据,我的视图控制器实现UIActivityItemSource
协议如下:
- (IBAction)onShareButton:(UIButton *)sender
{
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[self] applicationActivities:nil];
activityViewController.excludedActivityTypes = @[UIActivityTypeMessage, UIActivityTypeAssignToContact, UIActivityTypeCopyToPasteboard, UIActivityTypeMessage, UIActivityTypePostToWeibo, UIActivityTypePrint, UIActivityTypeSaveToCameraRoll];
[self presentViewController:activityViewController animated:YES completion:^{}];
}
#pragma mark - UIActivityItemSource Protocol
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType {
if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {
NSArray *items = @[@"message facebook", [NSURL URLWithString:@"http://www.myUrlFacebook.com"]];
return items;
} else if ([activityType isEqualToString:UIActivityTypePostToTwitter]) {
NSArray *items = @[@"message twitter", [NSURL URLWithString:@"http://www.myUrlTwitter.com"]];
return items;
} else if ([activityType isEqualToString:UIActivityTypeMail]) {
NSArray *items = @[@"message mail", [NSURL URLWithString:@"http://www.myUrlMail.com"]];
return items;
}
NSArray *items = @[@"Not a proper Activity", [NSURL URLWithString:@"http://www.myUrlMail.com"]];
return items;
}
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController {
return @"PlaceHolder";
}
Run Code Online (Sandbox Code Playgroud)
当我返回一个简单的NSString为activityViewController:itemForActivityType:
字符串我很好用UIActivityViewController
,但我找不到使用方法Array
!
根据Apple文档,它应该是可能的:
此方法返回活动对象Apple文档要执行的实际数据对象
有没有人使用这个UIActivityItemSource
带数组的协议,还是有一个使用完整的教程来做到这一点?
注意:我在控制台上也出现了这个错误,它可能有帮助......
启动服务:注册未知的应用程序标识符com.apple.mobilemail失败
启动服务:无法找到应用程序标识符com.apple.mobilemail
Dou*_*oug 21
符合的单个对象UIactivityItemSource
只能返回单个数据activityViewControllerPlaceholderItem:
,没有NSArray
s.
您可以通过在初始部分中创建并传递两个UIActivityItemSource
s 来克服此问题.每个源都可以传递占位符值,但可以返回空白,因此您实际上不必根据活动使用该特定类型的数据.activityItems
initWithActivityItems:
itemForActivityType
或者只是使用另一个答案中提到的那个很酷的扩展.
归档时间: |
|
查看次数: |
10391 次 |
最近记录: |