UIActivityViewController

UIActivityViewController

我有一系列要分享的项目。如何强制下达特定订单?例如:

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


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

最佳答案

您不能强制共享项的特定顺序,无论如何共享项都不是问题,这只是告诉委托者根据您提供的信息数组填充了哪些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,直到他们实现此功能。

关于ios - UIActivityViewController-项目顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28012215/

10-14 22:44