2016-01-20 201 views
2

我有问题UIActivity函数。在菜单视图中排序项目后丢失项目

首先,我创建3个活动项目:

  1. activityDownload
  2. activityTrash
  3. activityMove

,并加入到UIActivityViewController 然后,当我提出UIActivityViewController,其包括上述3项。好的,这里没问题。 然后,当我点击按钮更多,并对项目进行排序时,例如,我将“移动”按钮移动到顶部, 点击“完成”按钮后,我不知道为什么下载,垃圾项目丢失了? 移动项目仅显示在AirDrop菜单视图中。

NSURL *url = [self fileToURL:self.documentName]; 
NSArray *objectsToShare = @[url]; 

AirDropActivityView *activityDownload = [[AirDropActivityView alloc] init]; 
activityDownload.airDropType = 0; 
AirDropActivityView *activityTrash = [[AirDropActivityView alloc] init]; 
activityTrash.airDropType = 1; 
AirDropActivityView *activityMove = [[AirDropActivityView alloc] init]; 
activityMove.airDropType = 2; 

NSArray *uiActivitys = @[activityDownload,activityTrash,activityMove]; 
UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:uiActivitys]; 

// Exclude all activities except AirDrop. 
NSArray *excludedActivities = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook, UIActivityTypePostToWeibo,UIActivityTypeMessage,UIActivityTypePrint, UIActivityTypeCopyToPasteboard UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll,UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr,UIActivityTypePostToVimeo,UIActivityTypePostToTencentWeibo]; 
controller.excludedActivityTypes = excludedActivities; 

// Present the controller 
[self presentViewController:controller animated:YES completion:nil]; 

https://gist.github.com/tranhieutt/f73999234339f31aa86c

请参阅屏幕截图:

enter image description here

enter image description here

回答

1

这可能是所有的自定义视图UIActivity你使用的是具有相同activityType会导致这个问题。

因此,我建议为每个要使用的视图创建每个更多自定义UIActivity。像这样:

创建AirDropActivityView1; 在AirDropActivityView1.m,执行:

#import "AirDropActivityView1.h" 

@implementation AirDropActivityView 

- (NSString *)activityType 
{ 
    return @"youapp.Activity1"; 
} 

- (NSString *)activityTitle 
{ 
    return @"Activity1"; 
} 

- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems 
{ 
    return YES; 
} 

@end 

而且随着AirDropActivityView2.m

#import "AirDropActivityView2.h" 

    @implementation AirDropActivityView 

    - (NSString *)activityType 
    { 
     return @"youapp.Activity2"; 
    } 

    - (NSString *)activityTitle 
    { 
     return @"Activity2"; 
    } 

    - (BOOL)canPerformWithActivityItems:(NSArray *)activityItems 
    { 
     return YES; 
    } 

    @end 

最后:

AirDropActivityView1 *activity1 = [[AirDropActivityView1 alloc] init]; 

    AirDropActivityView2 *activity2 = [[AirDropActivityView2 alloc] init]; 

    NSArray *uiActivitys = @[activity1,activity2]; 

现在你可以重新排序。 希望得到这个帮助。

+0

感谢您的帮助。 我刚刚实施。没关系。所以,我有8个以上的功能,这意味着我必须创建8个课程。 –

+0

不,不需要。创建一个普通的类,并创建多少个视图,为此创建多个实例。你需要记住的一件事是每个实例的'activityType'必须不同。 –

+0

>每个实例的activityType必须不同。 是的,我明白了。这是正确的。 谢谢! –