Endlich durch Apple (ziemlich düster) Dokumentation über die neue UIActivityViewController
Klasse und das UIActivityItemSource
Protokoll, und ich versuche, verschiedene Datensätze zu verschiedenen Aktionen aus der Aktivitätsansicht aufgerufen senden. Um die Dinge zu vereinfachen, sehe ich zwei Dinge an.Anfangstext und Paperclipped-URL für Aktionen in UIActivityViewController & UIActivityItemSource?
- Eine Facebook-Posting-Aktion, die "Check this out!" und eine URL an den Post anhängen (mit dieser niedlichen kleinen Büroklammer).
- Eine Twitter-Posting-Aktion, die "Check this out, with #hashtag!" und die gleiche URL anhängen (mit derselben Büroklammer).
Hier ist der Code, den ich jetzt implementiert habe.
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType {
if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {
return @"Check this out!";
} else if ([activityType isEqualToString:UIActivityTypePostToTwitter]) {
return @"Check this out, with #hashtag!";
}
return @"";
}
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController {
return @"";
}
Und dann, wenn ich diesen Aktivitätsansicht-Controller (es ist in der gleichen Klasse), das ist, was ich tue.
UIActivityViewController *activityView = [[UIActivityViewController alloc] initWithActivityItems:@[self] applicationActivities:nil];
[self presentViewController:activityView animated:YES completion:nil];
Mein Dilemma ist , wie man das NSURL
Objekt befestigen. Es ist relativ einfach, die iOS 6 SL-Klasse Buchungsmodalitäten aufzurufen; Sie rufen einfach die einzelnen Methoden auf, um eine URL oder ein Bild anzuhängen. Wie würde ich das hier machen?
Ich werde beachten, dass anstelle NSString
Objekte aus -activityViewController:itemForActivityType
zurückzukehren, wenn ich nur NSURL
Objekten zurückgeben, zeigen sie mit dieser Büroklammer, ohne Text in der Zeit nach oben. Wenn ich ein Array dieser beiden Elemente zurückgebe, wird nichts angezeigt.
Beachten Sie, dass eine einzelne UIActivityItemSource nur einen Platzhalter für ein einzelnes Datenelement zurückgeben kann (keine zurückgegebenen NSArrays für 'activityViewControllerPlaceHolderItem:'. Weitere Informationen finden Sie in der folgenden Frage: http://stackoverflow.com/questions/13029340/uiactivityitemsource- protocole-set-complex-object – Doug
Danke für den Hinweis auf diese andere Frage.Ich habe den "UIActivityViewController" vorläufig verlassen (ich habe zu viele Stunden damit verschwendet, es zu tun, was ich will), da es so ist so unflexibel, aber diese Unterklasse, die in Ihrem Link erwähnt wird, scheint ein bestimmter Schritt in die richtige Richtung zu sein. " –
Ich habe mit dem gleichen Problem gekämpft. Es scheint merkwürdig, dass sie keine Konstanten für mögliche Datentypen definiert haben diese. UIActivityViewController ist eine großartige Idee, aber die Implementierung ist ein bisschen verrückt jetzt. – poetmountain