JotWee的回答幫了我。
沒有必要爲子分級,UIActivityItemSource
協議方法可以在視圖控制器,其中份額按鈕實施實現。
非常重要的補充self
在活動項目陣列,像這樣(爲JotWee建議):
NSArray *activityItems = [NSArray arrayWithObjects:self, url, image, nil];
這是我最終的實現:
ViewController.h
@interface ViewController : UIViewController <UIActivityItemSource>
的ViewController .m
- (void)shareBarButtonItemClick:(UIBarButtonItem *)sender
{
NSURL *url = [NSURL URLWithString:@"http://example.com"];
NSURL *imageUrl = [NSURL URLWithString:@"http://example.com/images/1.jpg"];
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:imageUrl]];
NSArray *activityItems = [NSArray arrayWithObjects:self, url, image, nil];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];
}
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType
{
return @"Summary Text";
}
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController
{
return @"";
}
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType
{
return @"Subject";
}
我已經這樣做了,但方法沒有被調用。我傳入一個'UIActivityItemProvider'對象(是的,我在我的視圖控制器中實現了'UIActivityItemSource'協議)。 – Mahouk
你不應該在視圖控制器中實現'UIActivityItemSource'協議。 'UIActivityItemProvider'實現這個協議的方法。 – Niels
現在,我在我的'UIActivityItemProvider'子類中實現了方法!非常感謝!我已經好幾個小時了。 – Mahouk