web-dev-qa-db-fra.com

Bouton Annuler dans UIAlertController avec UIAlertControllerStyle.ActionSheet

Je souhaite ajouter un bouton d'annulation séparé à mon UIAlert.

Je sais comment faire avec UIActionSheet mais cela devrait également être possible avec UIAlert, non?

var sheet: UIActionSheet = UIActionSheet();
    let title: String = "...";
    sheet.title  = title;
    sheet.delegate = self;
    sheet.addButtonWithTitle("Cancel");
    sheet.addButtonWithTitle("...")
    sheet.cancelButtonIndex = 0;
    sheet.showInView(self.view);

Cela aura un bouton ... et un bouton d'annulation qui est séparé.

Alors est-ce que quelqu'un sait comment faire cela avec 

    var alert = UIAlertController(title: "...", message: "....", preferredStyle: UIAlertControllerStyle.ActionSheet)

?

Je suis nouveau sur xcode et Swift, désolé si cette question est idiote ou quoi que ce soit ... 

15
user4001326

C'est très simple, mais fonctionne un peu différemment de la façon dont ils fonctionnaient auparavant. Maintenant, vous ajoutez des "actions" à vos alertes. Ces actions sont ensuite représentées par des boutons sur le périphérique.

alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil))

Ci-dessus se trouve le code nécessaire pour un simple bouton d’annulation - gardez à l’esprit que la suppression de l’alerte se fait automatiquement, ne la mettez donc pas dans votre gestionnaire. Si vous voulez ensuite créer un autre bouton qui fait quelque chose, utilisez le code ci-dessous:

alert.addAction(UIAlertAction(title: "Button", style: UIAlertActionStyle.Default, handler: { action in
        println("This button now calls anything inside here!")
    }))

J'espère avoir compris votre question et cela répond à ce que vous demandiez. J'ajouterai également qu'après avoir ajouté toutes les "actions", vous présentez l'alerte à l'aide du code ci-dessous:

self.presentViewController(alert, animated: true, completion: nil)

J'espère que cela t'aides!

39
Jack Chorley

Je voulais aller de l'avant et fournir une réponse spécifique à une question spécifique. L'utilisateur a posé des questions sur la mise en œuvre d'un bouton "annuler" et non d'un bouton par défaut. Découvrez la réponse ci-dessous!

let alertController = UIAlertController(title: "Select one", message: "Hey! Press a button", preferredStyle: .actionSheet)

let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)

alertController.addAction(cancelAction)

self.present(alertController, animated: true, completion: nil)
5
Kenny Batista

C'est peut-être la pire réponse codée que vous auriez vue, mais j'ai pu répondre à votre demande en essayant ceci: 

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Alert Title" message:@"Alert Message" preferredStyle:UIAlertControllerStyleAlert];
UILabel *alertLine = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, alertController.view.frame.size.width, 2)];
alertLine.backgroundColor=[UIColor blackColor];
[alertController.view.preferredFocusedView addSubview:alertLine];
UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
[alertController addAction:ok];
[self.navigationController presentViewController:alertController animated:YES completion:nil];
1
Pradeep Mittal