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?
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
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:
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
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)
Tout le monde dit UIAlertView. Mais pour confirmer la suppression, UIActionSheet est probablement le meilleur choix. Voir Quand utiliser UIAlertView vs UIActionSheet
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
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
Utilisez la classe UIAlertView pour afficher un message d’alerte à l’utilisateur.
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.
É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)
}