UIActivityViewController&中的初始文本和paperclipped-URL用于操作UIActivityItemSource?

时间:2012-10-09 21:20:00

标签: iphone ios user-interface ios6

最后通过关于新UIActivityViewController类和UIActivityItemSource协议的Apple(相当令人沮丧的)文档,我正在尝试将不同的数据集发送到从活动视图调用的不同操作。为了简化事情,我正在研究两件事。

  1. Facebook发帖操作,应该说“看看这个!”并附上一个URL到帖子(用那个可爱的小回形针)。
  2. Twitter发帖操作,应该说“用#hashtag检查一下!”并附上相同的网址(使用相同的回形针)。
  3. 这是我现在实施的代码。

    - (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:itemForActivityType个对象,如果我只返回NSURL个对象,它们就会显示回形针,帖子中没有正文。如果我返回这两个项目的数组,则根本没有任何内容。

1 个答案:

答案 0 :(得分:15)

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

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];

真的希望有更多这方面,但现在就是。