2013-12-20 4 views
2

UIActivityItemSources는 한 종류의 자리 표시 자 항목 만 반환 할 수 있습니다. 이것은 이상한 것처럼 보입니다. 왜냐하면 주어진 액티비티에 따라 문자열, NSData 객체 또는 이미지를 반환 할 수있는 UIActivityItemSource가 있기 때문입니다.여러 개의 UIActivityViewController 자리 표시 자 항목?

실제로 두 가지 이상의 자리 표시자를 반환 할 방법이 있습니까? (NSArrays는 작동하지 않는 것 같습니다.)

(나는 UIActivityItemProvider 인스턴스를 묶어서 각각의 다른 데이터 유형을 지원하는 솔루션을 상상할 수 있습니다. 그러나 이것은 필요한 것보다 훨씬 많은 작업처럼 보입니다. ..?)

답변

1

itemForActivityType 함수 내에 추적을 추가하면이 함수가 여러 번 호출된다는 것을 알 수 있습니다. 공유 할 수있는 활동별로 하나씩.

예를 들어

- 내가 트위터와 메일/SMS 공유를 위해 다른 텍스트를 제공하려는 경우 나는 이런 식으로 뭔가를 할 것이다 :

- (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

내 UIActivityItemSource는 activityType (데이터, 이미지, 텍스트)에 따라 다른 종류의 개체를 반환합니다. 그러나 [UIActivityItemSource activityViewControllerPlaceholderItem :]에 전달 된 activityType 매개 변수가 없으므로 다른 종류의 데이터를 반환한다고 어떻게 표현할 수 있습니까? –