gpt4 book ai didi

objective-c - UIActivityItemSource Protocol 设置复杂对象

转载 作者:太空狗 更新时间:2023-10-30 03:15:27 25 4
gpt4 key购买 nike

我正在使用 iOS 6 共享信息的新方法:UIActivityViewController。要根据媒体(facebook、twitter 或邮件)选择共享数据,我的 View Controller 实现了 UIActivityItemSource 协议(protocol),如下所示:

- (IBAction)onShareButton:(UIButton *)sender
{

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[self] applicationActivities:nil];

activityViewController.excludedActivityTypes = @[UIActivityTypeMessage, UIActivityTypeAssignToContact, UIActivityTypeCopyToPasteboard, UIActivityTypeMessage, UIActivityTypePostToWeibo, UIActivityTypePrint, UIActivityTypeSaveToCameraRoll];
[self presentViewController:activityViewController animated:YES completion:^{}];
}

#pragma mark - UIActivityItemSource Protocol

- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType {
if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {
NSArray *items = @[@"message facebook", [NSURL URLWithString:@"http://www.myUrlFacebook.com"]];
return items;
} else if ([activityType isEqualToString:UIActivityTypePostToTwitter]) {
NSArray *items = @[@"message twitter", [NSURL URLWithString:@"http://www.myUrlTwitter.com"]];
return items;
} else if ([activityType isEqualToString:UIActivityTypeMail]) {
NSArray *items = @[@"message mail", [NSURL URLWithString:@"http://www.myUrlMail.com"]];
return items;
}

NSArray *items = @[@"Not a proper Activity", [NSURL URLWithString:@"http://www.myUrlMail.com"]];
return items;
}

- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController {
return @"PlaceHolder";
}

当我为 activityViewController:itemForActivityType: 返回一个简单的 NSString 时,我的 UIActivityViewController 很好地使用了该字符串,但我找不到使用数组 !

根据 Apple 文档,应该可以:

This method returns the actual data object to be acted on by an activity object Apple documentation

有没有人用过这个UIActivityItemSource协议(protocol)和数组,或者是否有一个完整的教程来做到这一点?

注意:我在控制台上也遇到了这个错误,它可能有帮助......

Launch Services: Registering unknown app identifier com.apple.mobilemail failed

Launch Services: Unable to find app identifier com.apple.mobilemail

最佳答案

符合UIactivityItemSource的单个对象只能为activityViewControllerPlaceholderItem:返回单条数据,没有NSArray

您可以通过在初始 initWithActivityItems:activityItems 部分创建并传递两个 UIActivityItemSource 来解决这个问题。每个源都可以传递一个占位符值,但可以在 itemForActivityType 上返回一些空白,因此您实际上不必根据事件使用特定类型的数据。

或者只使用其他答案中提到的那个很酷的扩展。

关于objective-c - UIActivityItemSource Protocol 设置复杂对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13029340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com