UIActivityViewController – 项目的顺序

我有一些我想分享的项目。 我如何强制要求具体订单? 例如:

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

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

你不能强制共享项目的特定顺序,共享项目不是问题无论如何,这只是告诉委托什么UIActivity应用程序填充基于您提供的信息arrays。 您尝试对UIActivityViewController支持的应用程序进行重新sorting。 您可以使用excludedActivityTypes像摄像机滚动,Facebook等内置的某些项目,以省略与共享项目无关的特定共享点。
你现在最好的select是要么UIActivityViewController子类,你可以为你的UIActivityViewController创build自定义的图标等,但是这将不允许你重新sorting支持的应用程序。 然而,你有更多的select来通过子类自定义: 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; } 

但是,如果这不能绕过你的问题,那么你将不得不创build自己的UIActivityViewController直到他们实现这个function。