Comment créer un bouton de partage iOS standard?

Les lignes directrices de L'Interface humaine iOS disent :

Utilisez le bouton de partage fourni par le système. les Utilisateurs sont familiers avec le sens et le comportement de ce bouton, c'est donc une bonne idée de l'utiliser lorsque cela est possible. La principale exception à cette règle est si votre application ne contient pas de barre d'outils ou de barre de navigation[, car] le bouton Partager ne peut être utilisé que dans une barre d'outils ou une barre de navigation.

OK, mais comment puis-je "utiliser le bouton de partage fourni par le système"? une recherche du la documentation n'a rien d'utile.

J'ai compris que je devrais utiliser UIActivityViewController dans ma réponse au bouton en cours d'écoute , mais comment créer le bouton de partage standard en premier lieu?

30
demandé sur Community 2013-11-02 02:30:52

7 réponses

Le bouton de partage standard est un UIBarButtonItem (donc il ne peut aller que sur une barre de navigation ou une barre d'outils). Vous devez Créer un "élément Système" ; plus précisément, un "élément d'action" . L'élément de bouton de la barre "action" est le bouton Partager.

36
répondu Peter Hosey 2013-11-01 22:30:52

Voici le code. Je suppose que vous êtes à L'intérieur de ViewController donc self a la propriété navigationItem.

UIBarButtonItem *shareButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAction
                     target:self
                     action:@selector(shareAction:)];
self.navigationItem.rightBarButtonItem = shareButton;
25
répondu SimpleApp 2014-04-28 07:49:30

Cela va dans votre viewDidLoad:

UIBarButtonItem *shareButton = [[UIBarButtonItem alloc]
                                initWithBarButtonSystemItem:UIBarButtonSystemItemAction
                                target:self
                                action:@selector(compartir:)];
self.navigationItem.rightBarButtonItem = shareButton;

Et définissez votre méthode de sélection à appeler en tant qu'action (dans mon cas nommé "compartir"):

- (void) compartir:(id)sender{

//Si no


NSLog(@"shareButton pressed");


NSString *stringtoshare= @"This is a string to share";
UIImage *imagetoshare = img; //This is an image to share.

NSArray *activityItems = @[stringtoshare, imagetoshare];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePrint, UIActivityTypePostToTwitter, UIActivityTypePostToWeibo];
[self presentViewController:activityVC animated:YES completion:nil];
}
11
répondu danielrosero 2018-01-11 00:51:44

Principal.storyboard - > élément de bouton de barre - > Inspecteur - > élément Système a choisi "d'Action"entrez la description de l'image ici

5
répondu saneryee 2016-07-12 22:33:52

Le bouton d'Action fourni par le système peut également être entièrement créé avec un générateur D'Interface. Pour ce faire, il suffit de glisser-déposer le UIToolbar à votre vue. Que faites glisser et déposez le UIBarButtonItem dans le UIToolbar. Comme étape suivante sélectionnez dans la hiérarchie de vue le UIBarButtonItem , Allez à L'Inspecteur D'attributs et sélectionnez comme élément Système Le "Action". fait!

En outre, il est possible de connecter le UIBarButtonItem avec votre classe comme IBOutlet ou IBAction.

Veuillez noter: j'utilise comme référence un Xcode 7.

2
répondu dzensik 2015-10-27 13:58:52

Voici le code pour Swift 3.

func addShareBarButtonItem() {

    let shareButton = UIBarButtonItem(barButtonSystemItem: .Action, target: self, action: #selector(MyViewController.shareButtonPressed))

    self.navigationItem.rightBarButtonItem = shareButton
}

func shareButtonPressed() {
    //Do something now!
}
2
répondu jarora 2016-12-31 07:11:44

Seulement mes deux cents pour swift 4 / Xcode 10:

1) l'action a changé de caractère initial:

let shareButton = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(shareButtonPressed))

2) ajouter @obj:

@objc func shareButtonPressed() {
    //Do something now!
}
0
répondu ingconti 2018-09-01 14:23:19