recuperar - ¿Cómo crear un cuadro de alerta en iphone?
recuperar notificaciones iphone (10)
Aquí proporcioné el mensaje de alerta, que usé en mi primera aplicación:
@IBAction func showMessage(sender: UIButton) {
let alertController = UIAlertController(title: "Welcome to My First App",
message: "Hello World",
preferredStyle: UIAlertControllerStyle.alert)
alertController.addAction(UIAlertAction(title: "OK",
style: UIAlertActionStyle.default,
handler: nil))
present(alertController, animated: true, completion: nil)
}
con manejadores apropiados para las respuestas de los usuarios.
Me gustaría hacer un cuadro de tipo de alerta para que cuando el usuario intente eliminar algo, diga "está seguro" y luego tenga un sí o un no, si está seguro. ¿Cuál sería la mejor manera de hacer esto en iPhone?
El post es bastante antiguo, pero sigue siendo una buena pregunta. Con iOS 8 la respuesta ha cambiado. Hoy prefiere usar ''UIAlertController'' con un ''preferredStyle'' de ''UIAlertControllerStyle.ActionSheet''.
Un código como este (swift) que está enlazado a un botón:
@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)
}
produciría esta salida:
EDITAR: El código se estrelló en iPad, iOS 8+. Si se agregaron las líneas necesarias como se describe aquí: en otra respuesta de desbordamiento de pila
Para mostrar un mensaje de alerta, use 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];
Una vez que establezca el delegado como auto, puede realizar su acción en este método
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
Para swift es muy 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)
Siendo que UIAlertView
ahora está en desuso, quería proporcionar una respuesta a los futuros codificadores que se encuentren con esto.
En lugar de UIAlertView
, usaría UIAlertController
así:
@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)
}
Todo el mundo está diciendo UIAlertView. Pero para confirmar la eliminación, UIActionSheet es probablemente la mejor opción. Vea Cuándo usar un UIAlertView vs. UIActionSheet
UIAlertView parece la opción obvia para la confirmación.
Configure el delegado al controlador e implemente el protocolo UIAlertViewDelegate http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAlertViewDelegate_Protocol/UIAlertViewDelegate/UIAlertViewDelegate.html
Utilice la clase UIAlertView para mostrar un mensaje de alerta al usuario.
Utilice un UIAlertView :
UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Alert Title"
message:@"are you sure?"
delegate:self
cancelButtonTitle:@"No"
otherButtonTitles:@"Yes", nil];
[av show];
[av autorelease];
Asegúrate de implementar:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
Para manejar la respuesta.
Un UIAlertView
es la mejor manera de hacerlo. Se animará en el centro de la pantalla, atenuará el fondo y obligará al usuario a solucionarlo, antes de volver a las funciones normales de su aplicación.
Puedes crear un UIAlertView
como este:
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];
Eso mostrará el mensaje.
Luego, para verificar si pulsaron eliminar o cancelar, use esto:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 0){
//delete it
}
}
Asegúrese de que en su archivo de encabezado ( .h
), incluya UIAlertViewDelegate
poniendo <UIAlertViewDelegate>
, junto a lo que herede su clase (es decir, UIViewController
o UITableViewController
, etc.)
Para obtener más información sobre todos los detalles de UIAlertViews
consulte los documentos de Apple aquí.
Espero que ayude