UIActivityViewController传递不同的共享数据

UIActivityViewController传递不同的共享数据

问题描述:

我寻找UIActivityViewController与为打印选项不同类型的活动类型即共享不同的字符串或图像,共享选项(Facebook,Twitter的)。UIActivityViewController传递不同的共享数据

,但没有得到任何选项来做到这一点。请指教。

谢谢!

试试这个代码

-(void)shareContent{ 

NSString * message = @"My too cool Son"; 

UIImage * image = [UIImage imageNamed:@"boyOnBeach"]; 

NSArray * shareItems = @[message, image]; 

UIActivityViewController * avc = [[UIActivityViewController alloc] initWithActivityItems:shareItems applicationActivities:nil]; 

[self presentViewController:avc animated:YES completion:nil]; 

} 
+0

上面的代码共享任何活动类型相同的内容,但假设如果我想分享打印选项不同的图像,然后该怎么办 –

+0

@MinkleGarg如果你想分享多个图像,如果你不是创造array.or的图像想要共享动态图像而不是设置ImageView控件名称。 – iOS

+0

假设activityviewcontroller出现,现在用户想分享打印活动的图像,但这个图像应该与其他活动共享图像不同。因此,如果用户点击打印选项,并且用户选择(脸谱,微博等),我们可以保留不同的图像,那么图像应该是不同的。是否有任何方法在选择活动类型时使用不同的内容。 –

可以在.m文件做到这一点使用UIActivityItemProvider

在.h文件中

@interface APActivityProvider : UIActivityItemProvider <UIActivityItemSource> 

@end 

@implementation APActivityProvider 

- (id) activityViewController:(UIActivityViewController *)activityViewController 
      itemForActivityType:(NSString *)activityType { 
    if ([activityType isEqualToString:UIActivityTypePostToFacebook]) 
     return @"This is a facebook post!"; 
    if ([activityType isEqualToString:UIActivityTypeMessage]) 
     return @"SMS message text"; 
    if ([activityType isEqualToString:UIActivityTypeMail]) 
     return @"Email text here!"; 

} 

- (void) shareAppData { 
    APActivityProvider *ActivityProvider = [[APActivityProvider alloc] initWithPlaceholderItem: @“”]; 
    NSArray *Items = @[ActivityProvider]; 


    UIActivityViewController *ActivityView = [[UIActivityViewController alloc] 
               initWithActivityItems:Items 
               applicationActivities:nil]; 

    [ActivityView setValue:@“Title for email” forKey:@"subject"]; 

    [self presentViewController:ActivityView animated:YES completion:nil]; 

    [ActivityView setCompletionHandler:^(NSString *act, BOOL done) 
    { 
     NSString *ServiceMsg = nil; 
     if ([act isEqualToString:UIActivityTypeMail]) 
      ServiceMsg = @"Mail sended!"; 
     if ([act isEqualToString:UIActivityTypePostToTwitter]) 
     ServiceMsg = @"Post on twitter, ok!"; 
     if ([act isEqualToString:UIActivityTypePostToFacebook]) 
     ServiceMsg = @"Post on facebook, ok!"; 
     if ([act isEqualToString:UIActivityTypeMessage])   
     ServiceMsg = @"SMS sended!"; 

     if (done) 
     { 
      UIAlertView *Alert = [[UIAlertView alloc] initWithTitle:ServiceMsg message:@"" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil]; 
      [Alert show]; 
     } 
    }]; 
}