2016-01-20 203 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必須不同。 是的,我明白了。這是正確的。 謝謝! –