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];
}
答
可以在.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];
}
}];
}
上面的代码共享任何活动类型相同的内容,但假设如果我想分享打印选项不同的图像,然后该怎么办 –
@MinkleGarg如果你想分享多个图像,如果你不是创造array.or的图像想要共享动态图像而不是设置ImageView控件名称。 – iOS
假设activityviewcontroller出现,现在用户想分享打印活动的图像,但这个图像应该与其他活动共享图像不同。因此,如果用户点击打印选项,并且用户选择(脸谱,微博等),我们可以保留不同的图像,那么图像应该是不同的。是否有任何方法在选择活动类型时使用不同的内容。 –