显示UIActivityViewController中的所有选项

时间:2016-10-18 03:43:17

标签: ios objective-c facebook uiactivityviewcontroller

我在创建本机共享对话框时遇到了一些麻烦。 我的目标是通过原生视图控制器共享我的产品链接,但我不能这样做。我正在尝试测试代码:

NSURL *google = [NSURL URLWithString:@"http://google.com"];
NSArray *activityItems = @[google];
UIActivity *activity = [UIActivity new];
UIActivityViewController *activityViewControntroller = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:@[activity]];
activityViewControntroller.excludedActivityTypes = @[];
[self presentViewController:activityViewControntroller animated:true completion:nil];

我没有FB和Twitter图标。另一方面,我可以在safari中看到它的两个图标,当我触摸它时,我看到“你需要在发布之前配置你的帐户”。 所以,我想要相同的行为:所有最受欢迎的社交网络的图标,如VK,FB,twitter; whatsapp,viber和telegram等信使。如果没有安装其中一些,我想要对话框“你必须先登录”并重定向到safari(例如FB)登录或打开appstore(例如电报或者viber)进行安装;否则我想用我的链接发帖子。 我这样看:从活动vc中排除所有类型,而不是强行添加我需要的所有图标,并在手动点击时检查每个图标。但是在Apple docs中,我读过“你必须使用本机行为而不是创建自定义”。那么,它会是正确的吗?或者还有其他方法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

试试这个

-(void)clickShare:(UIButton *)sender{
    NSArray * activityItems = @[[NSString stringWithFormat:@"Some initial text."], [NSURL URLWithString:@"http://www.google.com"]];
    NSArray * applicationActivities = nil;
    NSArray * excludeActivities = @[];

    UIActivityViewController * activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:applicationActivities];
    activityController.excludedActivityTypes = excludeActivities;

    [self presentViewController:activityController animated:YES completion:nil];
}

此代码在我的项目中工作。