我需要在 iOS 中实现“共享为...”功能。例如,按钮名称为“共享为...”并弹出一个对话框,其中包括电子邮件、短信、Facebook、Twitter 等项目。我想知道是否有一个标准对话框来完成这项工作。
3 回答
经过搜索,我发现使用 UIActivityViewController 在 iOS6 中似乎很“标准”的方式。
以下是 developer.apple.com 的描述:
UIActivityViewController 类是一个标准的视图控制器,您可以使用它从您的应用程序中提供各种服务。该系统提供多种标准服务,例如将项目复制到粘贴板、将内容发布到社交媒体网站、通过电子邮件或 SMS 发送项目等等。应用程序还可以定义自定义服务。
以下是我使用 UIActivityViewController 设法生成的对话框
以下是我使用的源代码:
NSArray *activityItems = [NSArray arrayWithObjects: share_text.text, share_image.image , nil];
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
[self presentViewController:activityController animated:YES completion:nil];
在您的 ViewController.m 中:
NSString *message = @"The Flyer http://flyerdream.tumblr.com";
UIImage *image = [UIImage imageNamed:@"flyer"];
NSArray *arrayOfActivityItems = [NSArray arrayWithObjects:message, image, nil];
UIActivityViewController *activityVC = [[UIActivityViewController alloc]
initWithActivityItems:arrayOfActivityItems applicationActivities:nil];
[self.navigationController presentViewController:activityVC animated:YES completion:nil];
使用 UIActivityViewController 后,我相信它是一个比我在下面发布的更好的解决方案。我留下了我的答案,因为个人共享方法可能对某人有用。
这就是我在项目中实现共享功能的方式:
电子邮件:使用MFMailComposeViewController
。请参阅此处的文档:http: //developer.apple.com/library/ios/#documentation/MessageUI/Reference/MFMailComposeViewController_class/Reference/Reference.html
脸书和推特:使用SLComposeViewController
。请参阅此处的文档:http: //developer.apple.com/library/ios/#documentation/NetworkingInternet/Reference/SLComposeViewController_Class/Reference/Reference.html
例子:
// prepare and present SLComposeViewController if service is available
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
SLComposeViewController *socialPost = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[socialPost setInitialText:@"TEXT FOR POST"];
[socialPost addImage:[UIImage imageNamed:@"yourImage.png"]];
[self presentViewController:socialPost animated:YES completion:nil];
}
// set up a completion handler
[socialPost setCompletionHandler:^(SLComposeViewControllerResult result) {
switch (result) {
case SLComposeViewControllerResultDone:
// post was completed
break;
case SLComposeViewControllerResultCancelled:
// post was cancelled
break;
default:
break;
}
}
注意:如果您想为 Twitter 发帖,请在上面的代码示例中SLServiceTypeFacebook
替换为。SLServiceTypeTwitter