UIActivityViewController - 项目的顺序

时间:2015-01-18 16:47:24

标签: ios uiactivityviewcontroller

我想要分享一系列项目。我如何强制要求特定订单?例如:

NSArray *itemsToShare = @[text, image, image, audio]

数组中项目的顺序不适用于共享应用程序中的订单。

1 个答案:

答案 0 :(得分:-1)

您无法强制执行共享项目的特定订单,但共享项目无论如何都不是问题,而只是告诉代表根据您的信息数据填充哪些UIActivity应用程序提供。您尝试重新排序UIActivityViewController中支持的应用程序。您可以使用excludedActivityTypes排除某些内置的内容,如相机胶卷,Facebook等,以省略与您的共享项目相关的填充中的某些共享点。
此时您最好的选择是子类UIActivityViewController,您可以为UIActivityViewController创建自定义图标等,但这不允许您重新排序所支持的应用程序。但是,您可以通过子类化进行自定义: canPerformWithActivityItems: prepareWithActivityItems:等等。您可以使用它来查看是否可以自定义子类中显示的活动和子类的示例:

- (UIActivityViewController *)subclassedActivityViewController {
CustomActivity *customActivity = [[CustomActivity alloc] init];
FacebookActivity *facebookActivity = [[FacebookActivity alloc] init];
MessageActivity *messageActivity = [[MessageActivity alloc] init];
MailActivity *mailActivity = [[MailActivity alloc] init];

NSArray *applicationActivities = @[customActivity, facebookActivity, mailActivity, messageActivity];
NSArray *activitiesItems = @[@"A string to be used for customActivity", @"A string to be used for FacebookActivity", @"A string to be used for MessageActivity" etc];

UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activitiesItems applicationActivities:applicationActivities];

// Removed activities you don't want displayed
activityVC.excludedActivityTypes = [[NSArray alloc] initWithObjects:
                                                 UIActivityTypeCopyToPasteboard,
                                                 UIActivityTypePostToWeibo,
                                                 UIActivityTypePostToFacebook,
                                                 UIActivityTypeSaveToCameraRoll,
                                                 nil];

return activityVC;
}

但是,如果这不能解决您的问题,那么您必须创建自己的UIActivityViewController,直到他们实施此功能。