我有一系列要分享的项目。如何强制下达特定订单?例如:
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/