【问题标题】:standard way to implement share as function实现共享功能的标准方法
【发布时间】:2013-03-25 18:38:38
【问题描述】:

我需要在 iOS 中实现“共享为...”功能。 例如,一个按钮名称为“共享为...”并弹出一个对话框,其中包括电子邮件、短信、Facebook、Twitter 等项目。 我想知道是否有一个标准对话框来完成这项工作。

【问题讨论】:

标签: ios share


【解决方案1】:

经过搜索,我发现在 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];

【讨论】:

  • 查看了UIActivityViewController,这是一个比我发布的更好的共享解决方案。感谢您的发布! +1
【解决方案2】:

在您的 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];

【讨论】:

    【解决方案3】:

    在使用 UIActivityViewController 之后,我相信它是一个比我在下面发布的更好的解决方案。我留下了答案,因为个人分享方法可能对某人有用。

    这就是我在项目中实现共享功能的方式:

    电子邮件:使用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 上发帖,请将上述代码示例中的 SLServiceTypeFacebook 替换为 SLServiceTypeTwitter

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 2014-03-16
      • 2020-07-25
      • 1970-01-01
      • 2011-03-15
      相关资源
      最近更新 更多