10

终于通过 Apple 关于新UIActivityViewController类和UIActivityItemSource协议的(相当糟糕的)文档来实现它,我试图将不同的数据集发送到从活动视图调用的不同操作中。为了简化事情,我正在研究两件事。

  1. 一个 Facebook 发帖动作,应该说“看看这个!” 并在帖子中附加一个 URL(用那个可爱的小回形针)。
  2. 一个 Twitter 发布操作,应该说“用#hashtag 看看这个!” 并附上相同的 URL(使用相同的回形针)。

这是我现在已经实现的代码。

- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType {
    if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {
        return @"Check this out!";
    } else if ([activityType isEqualToString:UIActivityTypePostToTwitter]) {
        return @"Check this out, with #hashtag!";
    }

    return @"";
}

- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController {
    return @"";
}

然后当我设置这个活动视图控制器(它在同一个类中)时,这就是我所做的。

UIActivityViewController *activityView = [[UIActivityViewController alloc] initWithActivityItems:@[self] applicationActivities:nil];
[self presentViewController:activityView animated:YES completion:nil];

我的困境是如何附加该NSURL对象。调用 iOS 6 SL 类的发布模式相对容易;您只需调用各个方法来附加 URL 或图像。我该怎么做呢?

我会注意到,如果我只返回对象,而不是NSString从中返回对象,它们会与那个回形针一起显示,而帖子中没有正文。如果我返回这两个项目的数组,则根本没有任何显示。-activityViewController:itemForActivityTypeNSURL

4

1 回答 1

15

显然它就这么简单:将一个数组传递给UIActivityViewController's init 调用的第一个参数,数组中的每个项目都处理不同的数据类型,最终将出现在撰写屏幕中。self处理文本,第二个对象 ( NSURL) 附加 URL。

NSArray *items = @[self, [NSURL URLWithString:@"http://this-is-a-url.com"]];
UIActivityViewController *activityView = [[UIActivityViewController alloc]  initWithActivityItems:items applicationActivities:nil];
[self presentViewController:activityView animated:YES completion:nil];

真的希望有更多关于此的内容,但它就在这里。

于 2012-10-09T21:34:45.780 回答