Die Antwort von JotWee hat mir geholfen.
Es ist keine Unterklassierung erforderlich, UIActivityItemSource
Protokollmethoden können im View-Controller implementiert werden, wo der Share-Button implementiert ist.
Sehr wichtig self
Aktivitäts Artikel Array hinzuzufügen, wie dies (wie JotWee vorgeschlagen):
NSArray *activityItems = [NSArray arrayWithObjects:self, url, image, nil];
Hier ist meine endgültige Umsetzung:
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";
}
Ich mache das schon, und trotzdem werden die Methoden nicht aufgerufen. Ich übergebe ein 'UIActivityItemProvider'-Objekt (und ja, ich habe das' UIActivityItemSource'-Protokoll in meinem View-Controller implementiert). – Mahouk
sollten Sie das 'UIActivityItemSource'-Protokoll nicht in Ihrem View-Controller implementieren. 'UIActivityItemProvider' implementiert die Methoden für dieses Protokoll. – Niels
Es funktioniert jetzt, dass ich die Methoden in meiner Unterklasse 'UIActivityItemProvider' implementiert habe! Danke vielmals! Ich bin seit Stunden dabei. – Mahouk