标准的方式来实现共享function

我需要在iOS中实现“分享为…”function。 例如,一个button名称“共享为…”,并popup一个对话框,其中包括电子邮件,短信,脸书,推特等项目。 我想知道是否有一个标准的对话做这个工作。

search之后,我发现iOS6中使用UIActivityViewController的方式看起来相当“标准”。

以下是来自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后,我相信这是一个比我下面发布的更好的解决scheme。 我已经离开了我的答案,因为个人分享方法可能对某人有用。

这是我在我的项目中实现共享function的方式:

电子邮件 :使用MFMailComposeViewController 。 请参阅文档: http : //developer.apple.com/library/ios/#documentation/MessageUI/Reference/MFMailComposeViewController_class/Reference/Reference.html

Facebook和Twitter :使用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, SLServiceTypeTwitter在上面的代码示例SLServiceTypeTwitterreplace为SLServiceTypeFacebook