【问题标题】:UIActivityViewController pass different sharing dataUIActivityViewController 传递不同的共享数据
【发布时间】:2017-04-04 13:01:03
【问题描述】:

我一直在寻找 UIActivityViewController 以与不同类型的活动类型共享不同的字符串或图像,即打印选项、共享选项(facebook、twitter)。

但没有任何选择这样做。请指教。

谢谢!

【问题讨论】:

    标签: objective-c uiactivityviewcontroller


    【解决方案1】:

    试试这个代码

    -(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];
    
    }
    

    【讨论】:

    • 以上代码是为任何活动类型共享相同的内容,但假设如果我想共享不同的图像进行打印选项那么该怎么办
    • @MinkleGarg 如果你想共享多个图像而不是创建数组图像。或者如果你想共享动态图像而不是设置你的 ImageView 控件名称。
    • 假设出现了activityviewcontroller,现在用户想分享打印activity的图片,但是这个图片应该和其他activity分享的图片不同。因此,如果用户单击打印选项并且如果用户选择(facebook、twitter 等),那么我们可以 paas 不同的图像,那么图像应该是不同的。有什么方法可以在活动类型的选择上paas不同的内容。
    • @MinkleGarg 也试试这个演示 albertopasca.it/whiletrue/2012/10/…
    【解决方案2】:

    您可以使用 UIActivityItemProvider 来做到这一点

    在 .h 文件中

    @interface APActivityProvider : UIActivityItemProvider <UIActivityItemSource>
    
    @end
    

    在 .m 文件中

    @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];
             }
         }];
    }
    

    【讨论】:

      猜你喜欢
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多