2013-12-20 61 views
2

UIActivityItemSources似乎只能返回一種佔位符項目?這看起來很奇怪,因爲我有一個UIActivityItemSource,它可以根據給定的活動返回一個字符串,一個NSData對象或圖像。多個UIActivityViewController佔位符項目?

真的沒有辦法返回多種類型的佔位符嗎? (NSArrays似乎沒有工作。)

(我可以想象一個解決方案,我實例化了一大堆UIActivityItemProvider實例,每個實例都支持上面提到的不同數據類型,但是看起來好像有很多工作要做。 ..?)

回答

1

如果您在itemForActivityType函數中添加跟蹤,您將看到此函數將被多次調用。每個可用於共享的活動一個。

例如 - 如果我想對Twitter和電子郵件/短信共享提供不同的文字我也有這樣的事情:

- (id) activityViewController: (UIActivityViewController*) activityViewController itemForActivityType: (NSString*) activityType { 

    if (activityType == UIActivityTypePostToTwitter) { 
     return @"Sharing by Twitter"; 
    } 
    else 
     return @"Other kind of sharing"; 

} 

UPDATE:

如果要提供不同類型的數據分享(比如說文字和圖片) - 你需要以一種方式編寫你的佔位符函數,以便在多次調用時返回兩種不同類型的對象。

- (id) activityViewControllerPlaceholderItem: (UIActivityViewController*) activityViewController { 
    static int step = 0; 

    if (step == 0) { 
     step = 1; 
     return @"text"; 
    } 
    else if (step == 1) { 
     step = 2; 
     return [UIImage imageNamed: @"image"]; 
    } 
} 
+0

我不是在談論你提到的方法;我在說 - [UIActivityItemSource activityViewControllerPlaceholderItem:]。這只是似乎只調用一次的方法,而且我顯然無法切換activityType。謝謝。 –

+0

其實在我的測試中'activityViewControllerPlaceholderItem'被多次調用。但你究竟想達到什麼目的? – sha

+0

根據activityType(數據,圖像,文本),我的UIActivityItemSource返回不同​​類型的對象。但是沒有activityType參數傳入 - [UIActivityItemSource activityViewControllerPlaceholderItem:],那麼如何表達我返回不同類型的數據? –