UIActivityItemSource Protocole défini objet complexe
Je suis en utilisant iOS 6 nouvelle façon de partager l'information : UIActivityViewController
. Pour sélectionner les données partagées selon les médias (facebook, twitter ou mail) de mon point de vue, contrôleur de mettre en œuvre les UIActivityItemSource
Protocole comme suit :
- (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";
}
Quand je suis de retour d'un simple NSString pour activityViewController:itemForActivityType:
la chaîne est bien utilisé par mon UIActivityViewController
, mais je ne peux pas trouver un moyen d'utiliser un Array
!
Selon la Documentation d'Apple, il devrait être possible :
Cette méthode retourne les données réelles de l'objet pour être suivis par un objet d'activité
La documentation d'Apple
Personne ne jamais utiliser cette UIActivityItemSource
Protocole avec les Tableaux, ou est-il un utiliser tutoriel complet pour le faire ?
Note : j'ai également eu cette erreur sur la console, ça peut aider ...
De Services de lancement: Inscription inconnu identificateur d'application com.apple.mobilemail échoué
De Services de lancement: Impossible de trouver l'identificateur d'application com.apple.mobilemail
- Avez-vous trouvé ce message à propos de com.apple.mobilemail est dans la console?
- La console d'erreur se produit uniquement dans le simulateur, où le mail-app n'existe tout simplement pas. Il peut être ignoré.
- Comment avez-vous résolu ce problème?
Vous devez vous connecter pour publier un commentaire.
Après avoir passé une quantité importante de temps à essayer de comprendre celui-ci, il semble qu'il n'est pas possible de passer un
NSArray
d'éléments. J'ai donc étenduUIActivityViewController
pour le rendre possible.RDActivityViewController
Un seul objet conforme à
UIactivityItemSource
ne peut renvoyer un seul morceau de données pouractivityViewControllerPlaceholderItem:
, pas deNSArray
s.Vous pourriez surmonter ce par l'élaboration et l'adoption de deux
UIActivityItemSource
s dans leactivityItems
le cadre de la premièreinitWithActivityItems:
. Chaque source peut passer d'une valeur de l'espace réservé, mais peut retourner quelque chose de blanc suritemForActivityType
de sorte que vous n'avez pas à utiliser ce type particulier de données en fonction de l'activité.Ou tout simplement l'utilisation de l'epo, de l'extension mentionnée dans l'autre réponse.