web-dev-qa-db-fra.com

Comment créer une boîte d'alerte dans l'iphone?

Je souhaite créer une zone de type alerte de sorte que, lorsque l'utilisateur tente de supprimer quelque chose, le message "êtes-vous sûr" est-il activé? Quel serait le meilleur moyen de faire cela dans l'iphone?

28
Blane Townsend

Une UIAlertView est la meilleure façon de le faire. Il s'animera au milieu de l'écran, atténuera l'arrière-plan et obligera l'utilisateur à l'adresser avant de revenir aux fonctions normales de votre application.

Vous pouvez créer une UIAlertView comme ceci:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Wait" message:@"Are you sure you want to delete this.  This action cannot be undone" delegate:self cancelButtonTitle:@"Delete" otherButtonTitles:@"Cancel", nil];
[alert show];

Cela affichera le message.

Ensuite, pour vérifier s’ils ont tapé sur supprimer ou annuler, utilisez ceci:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex == 0){
        //delete it
    }
}

Assurez-vous que dans votre fichier d’en-tête (.h), vous incluez la UIAlertViewDelegate en mettant <UIAlertViewDelegate>, à côté de ce dont votre classe hérite (par exemple, UIViewController ou UITableViewController, etc.)

Pour plus d'informations sur toutes les spécificités de UIAlertViews check out Docs Apple ici

J'espère que cela pourra aider

60
Andrew

Le message est assez ancien, mais reste une bonne question. Avec iOS 8, la réponse a changé. Aujourd'hui, vous préférez utiliser 'UIAlertController' avec un 'preferredStyle' de 'UIAlertControllerStyle.ActionSheet'.

Un code comme celui-ci (Swift) qui est lié à un bouton:

@IBAction func resetClicked(sender: AnyObject) {
    let alert = UIAlertController(
        title: "Reset GameCenter Achievements",
        message: "Highscores and the Leaderboard are not affected.\nCannot be undone",
        preferredStyle: UIAlertControllerStyle.ActionSheet)
    alert.addAction(
        UIAlertAction(
            title: "Reset Achievements",
            style: UIAlertActionStyle.Destructive,
            handler: {
                (action: UIAlertAction!) -> Void in
                gameCenter.resetAchievements()
            }
        )
    )
    alert.addAction(
        UIAlertAction(
            title: "Show GameCenter",
            style: UIAlertActionStyle.Default,
            handler: {
                (action: UIAlertAction!) -> Void in
                self.gameCenterButtonClicked()
            }
        )
    )
    alert.addAction(
        UIAlertAction(
            title: "Cancel",
            style: UIAlertActionStyle.Cancel,
            handler: nil
        )
    )
    if let popoverController = alert.popoverPresentationController {
        popoverController.sourceView = sender as UIView
        popoverController.sourceRect = sender.bounds
    }
    self.presentViewController(alert, animated: true, completion: nil)
}

produirait cette sortie: enter image description here

EDIT: Le code s'est écrasé sur iPad, iOS 8+. Si vous ajoutez les lignes nécessaires comme décrit ici: sur un autre dépassement de pile, répondez

14
jboi

Pour Swift, c'est très simple. 

    //Creating the alert controller
    //It takes the title and the alert message and prefferred style
    let alertController = UIAlertController(title: "Hello  Coders", message: "Visit www.simplifiedios.net to learn xcode", preferredStyle: .Alert)

    //then we create a default action for the alert... 
    //It is actually a button and we have given the button text style and handler
    //currently handler is nil as we are not specifying any handler
    let defaultAction = UIAlertAction(title: "Close Alert", style: .Default, handler: nil)

    //now we are adding the default action to our alertcontroller
    alertController.addAction(defaultAction)

    //and finally presenting our alert using this method
    presentViewController(alertController, animated: true, completion: nil)

Ref: iOS Afficher le message d'alerte

2
Shaba Aafreen

Tout le monde dit UIAlertView. Mais pour confirmer la suppression, UIActionSheet est probablement le meilleur choix. Voir Quand utiliser UIAlertView vs UIActionSheet

1
Jon Reid

Pour afficher un message d’alerte, utilisez UIAlertView.

 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Wait" message:@"Are you sure you want to delete this." **delegate:self** cancelButtonTitle:@"Delete" otherButtonTitles:@"Cancel", nil];
[alert show];
[alert release];

Une fois que vous avez défini le délégué comme étant autonome, vous pouvez exécuter votre action sur cette méthode.

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
0
Anand

UIAlertView semble le choix évident pour la confirmation.

Définissez le délégué sur le contrôleur et implémentez le protocole UIAlertViewDelegate http://developer.Apple.com/library/ios/#documentation/uikit/reference/UIAlertViewDelegate_Protocol/UIAlertViewDelegate/UIAlertViewDelegate.html

0
InsertWittyName

Utilisez la classe UIAlertView pour afficher un message d’alerte à l’utilisateur.

0
Black Frog

Utilisez un UIAlertView :

UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Alert Title" 
                                                     message:@"are you sure?"
                                                    delegate:self 
                                           cancelButtonTitle:@"No"
                                           otherButtonTitles:@"Yes", nil];


        [av show];
        [av autorelease];

Assurez-vous de mettre en œuvre:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

Pour gérer la réponse.

0
rjstelling

Étant donné que UIAlertView est maintenant obsolète, je souhaitais fournir une réponse aux futurs codeurs rencontrés.

Au lieu de UIAlertView, j’utiliserais UIAlertController comme suit:

@IBAction func showAlert(_ sender: Any) {
  let alert = UIAlertController(title: "My Alert", message: "This is my alert", preferredStyle: UIAlertControllerStyle.alert)

  alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: {(action) in 
    alert.dismiss(animated: true, completion: nil)
  }))
  self.present(alert,animated:true, completion:nil)
}
0
danner.tech