2013-05-15 1 views
1

다른 서비스에 UIActivityIndicatorView의 다른 콘텐츠를 제공하고 싶습니다. 예를 들어 이메일 용 HTML 문자열, Facebook/Twitter 용 표준 문자열 및 복사 용 이미지 등이 있습니다. 이러한 모든 작업은 단일 팝업 창 내에서 발생합니다.하나의 UIActivityViewController 내 다른 서비스에 다른 콘텐츠 제공

나는 이것이 가능하지 않다고 생각합니다. 관련된 모든 클래스를 가지고 놀고 있었을 때, 필자는 제공 한 컨텐트 유형이 바뀌면서 활동보기에 나타나는 서비스가 변경되었음을 알았습니다. 즉, 문자열을 제공하면 세트 A가 나타납니다. 이미지를 제공 할 때 B 세트의 서비스가 나타났습니다.

다음 나는 다른 콘텐츠를 제공 할 수 있다고 생각하는 문자열과 이미지를 모두 추가하려고 시도했지만 문자열과 이미지를 서비스에 모두 추가합니다 (예 : 이메일은 문자열로 만든 다음 아래 이미지).

이 질문을 다시 시간과 시간을 요구하고있다
-(void)shareButtonTouchUpInside:(SMActionToolbarViewController*)sender{ 
    // Reposition anchor view for UIPopoverController to point at 
    [self repositionAnchorViewToButtonFrame:self.actionToolbarViewController.shareButtonFrame]; 

    // Asynch download of image 
    [SMUtility downloadAsset:self.selectedAsset completion:^(UIImage *image) { 
     // Create image source 
     SMActivitySource *activityImageSource = [[SMActivitySource alloc]initWithImage:image]; 
     // Create string source 
     NSString *assetsString = [SMUtility assetsString:[NSArray arrayWithObject:self.selectedAsset]]; 
     SMActivitySource *activityStringSource = [[SMActivitySource alloc]initWithString:assetsString]; 

     // Present UIActiviyViewController within an UIPopoverController 
     NSArray *items = [@[activityImageSource, activityStringSource]mutableCopy]; 
     UIActivityViewController *activityViewController = [[UIActivityViewController alloc]initWithActivityItems:items applicationActivities:nil]; 
     [activityViewController setCompletionHandler:^(NSString *activityType, BOOL completed){ 
      // TODO: Populate mixpanel data 
      [SMMixPanel eventSharePhotoMethod:@"Unknown"]; 
     }]; 
     self.buttonPopoverController = [[UIPopoverController alloc] initWithContentViewController:activityViewController]; 
     [self.buttonPopoverController presentPopoverFromRect:self.anchorView.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
    }]; 
} 
+0

[UIActivityViewController의 공유 공급자에 대한 다른 데이터] 가능한 복제본 (http://stackoverflow.com/questions/13551042/different-data-for-sharing-providers-in-uiactivityviewcontroller) – rmaddy

답변

0

, 당신의 자신의 UIActivity을 확인하는 것입니다 해결하는 유일한 방법은, 참조 : 나는 (HTML 링크입니다) 문자열 값을 제공하고있다 방법은 다음과

입니다 그것을하는 방법에 관한 사과 문서. 여기에 링크가 있습니다 : http://developer.apple.com/library/ios/#documentation/uikit/reference/UIActivity_Class/Reference/Reference.html

+0

예. 그것이 최선의 방법 일 것입니다. UIACtivity 만들기는 매우 쉽습니다;) – virindh

2

UIActivityItemProvider을 서브 클래스 화하거나 UIActivityItemSource을 따르는 객체를 만들어야합니다. 그 배열을 전달하고 (각 공유에 대해 하나씩), activityViewController:itemForActivityType: 호출에서 선택한 활동에 따라 일부가 nil을 반환하도록하십시오.

+0

네, 맞습니다. 그 정확한 제안을 사용하여 원래 게시물 이후이 주제에 대해 많은 것을 배웠습니다. – VaporwareWolf

+0

굉장해! 내 대답이 맞는 것 같으면이 질문을 대답으로 표시하십시오. :) – ccjensen