web-dev-qa-db-fra.com

Comment créer un bouton de partage iOS standard?

Les directives de l'interface humaine iOS disent :

Utilisez le bouton Partager fourni par le système. Les utilisateurs connaissent la signification 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 "utiliser le bouton Partager fourni par le système"? ne recherche dans la documentation se révèle rien d'utile.

J'ai compris que je devrais utiliser UIActivityViewController dans ma réponse au bouton tapé , mais comment pourrais-je créer le bouton Partager standard en premier lieu?

37
Peter Hosey

Le bouton Partager standard est un UIBarButtonItem (il ne peut donc aller que sur une barre de navigation ou une barre d'outils). Vous devez créer un "élément système" ; spécifiquement, n "élément d'action" . L'élément du bouton de la barre "action" est le bouton Partager.

41
Peter Hosey

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;
27
SimpleApp

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 comme action (dans mon cas, nommée "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];
}
13
danielrosero

Main.storyboard -> Bar Button Item -> Inspector -> System Item chose "Action" (enter image description here

6
saneryee

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!
}
3
jarora

Le bouton 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 la IToolbar sur votre vue. Ensuite, glissez et déposez le IBarButtonItem dans la barre d'outils UIT. À l'étape suivante, sélectionnez dans la hiérarchie des vues IBarButtonItem, accédez à l'inspecteur d'attributs et sélectionnez comme élément système "Action". Terminé!

De plus, il est possible de connecter le IBarButtonItem avec votre classe en tant qu'IBOutlet ou IBAction.

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

2
dzensik

seulement mes deux cents pour Swift 4/Xcode 10:

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

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

2) ajoutez @obj:

@objc func shareButtonPressed() {
    //Do something now!
}
1
ingconti