iphone objective-c cocoa-touch uialertview

iphone - uialertcontroller



Agregar una simple UIAlertView (10)

¿Qué código de inicio puedo usar para hacer una simple UIAlertView con un botón "OK" en ella?


Alerta simple con datos de matriz:

NSString *name = [[YourArray objectAtIndex:indexPath.row ]valueForKey:@"Name"]; NSString *msg = [[YourArray objectAtIndex:indexPath.row ]valueForKey:@"message"]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:name message:msg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show];


Aquí hay un método completo que solo tiene un botón, un ''ok'', para cerrar el UIAlert:

- (void) myAlert: (NSString*)errorMessage { UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:errorMessage message:@"" delegate:self cancelButtonTitle:nil otherButtonTitles:@"ok", nil]; myAlert.cancelButtonIndex = -1; [myAlert setTag:1000]; [myAlert show]; }


Como complemento de las dos respuestas anteriores (del usuario "sudo rm -rf" y "Evan Mulawski"), si no desea hacer nada cuando se hace clic en su vista de alerta, puede asignarla, mostrarla y liberarla. No tiene que declarar el protocolo de delegado.


Cuando desee que se muestre la alerta, haga esto:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"ROFL" message:@"Dee dee doo doo." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; // If you''re not using ARC, you will need to release the alert view. // [alert release];

Si desea hacer algo cuando se hace clic en el botón, implemente este método delegado:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { // the user clicked OK if (buttonIndex == 0) { // do something here... } }

Y asegúrese de que su delegado cumpla con el protocolo UIAlertViewDelegate :

@interface YourViewController : UIViewController <UIAlertViewDelegate>


Otras respuestas ya proporcionan información para iOS 7 y anteriores, sin embargo, UIAlertView está en desuso en iOS 8 .

En iOS 8+ debes usar UIAlertController . Es un reemplazo para UIAlertView y UIActionSheet . Documentación: UIAlertController Class Reference . Y un buen artículo sobre NSHipster .

Para crear una simple Vista de alerta, puede hacer lo siguiente:

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Title" message:@"Message" preferredStyle:UIAlertControllerStyleAlert]; //We add buttons to the alert controller by creating UIAlertActions: UIAlertAction *actionOk = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:nil]; //You can use a block here to handle a press on this button [alertController addAction:actionOk]; [self presentViewController:alertController animated:YES completion:nil];

Swift 3/4:

let alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: .alert) //We add buttons to the alert controller by creating UIAlertActions: let actionOk = UIAlertAction(title: "OK", style: .default, handler: nil) //You can use a block here to handle a press on this button alertController.addAction(actionOk) self.present(alertController, animated: true, completion: nil)

Tenga en cuenta que, dado que se agregó en iOS 8, este código no funcionará en iOS 7 y versiones posteriores. Así que, lamentablemente, por ahora tenemos que usar verificaciones de versión como estas:

NSString *alertTitle = @"Title"; NSString *alertMessage = @"Message"; NSString *alertOkButtonText = @"Ok"; if ([UIAlertController class] == nil) { //[UIAlertController class] returns nil on iOS 7 and older. You can use whatever method you want to check that the system version is iOS 8+ // Starting with Xcode 9, you can also use // if (@available(iOS 8, *)) { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:alertTitle message:alertMessage delegate:nil cancelButtonTitle:nil otherButtonTitles:alertOkButtonText, nil]; [alertView show]; } else { UIAlertController *alertController = [UIAlertController alertControllerWithTitle:alertTitle message:alertMessage preferredStyle:UIAlertControllerStyleAlert]; //We add buttons to the alert controller by creating UIAlertActions: UIAlertAction *actionOk = [UIAlertAction actionWithTitle:alertOkButtonText style:UIAlertActionStyleDefault handler:nil]; //You can use a block here to handle a press on this button [alertController addAction:actionOk]; [self presentViewController:alertController animated:YES completion:nil]; }

Swift 3/4:

let alertTitle = "Title" let alertMessage = "Message" let alertOkButtonText = "Ok" if #available(iOS 8, *) { let alertController = UIAlertController(title: alertTitle, message: alertMessage, preferredStyle: .alert) //We add buttons to the alert controller by creating UIAlertActions: let actionOk = UIAlertAction(title: alertOkButtonText, style: .default, handler: nil) //You can use a block here to handle a press on this button alertController.addAction(actionOk) } else { let alertView = UIAlertView(title: alertTitle, message: alertMessage, delegate: nil, cancelButtonTitle: nil, otherButtonTitles: alertOkButtonText) alertView.show() }

UPD: actualizado para Swift 3/4.

UPD 2: agregó una nota para @disponible en Objc-C comenzando con Xcode 9.


Para Swift 3:

let alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.alert) alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil)) self.present(alert, animated: true, completion: nil)


UIAlertView está en desuso en iOS 8. Por lo tanto, para crear una alerta en iOS 8 y superior, se recomienda usar UIAlertController:

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Title" message:@"Alert Message" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action){ // Enter code here }]; [alert addAction:defaultAction]; // Present action where needed [self presentViewController:alert animated:YES completion:nil];

Así es como lo he implementado.


Esta página muestra cómo agregar un UIAlertController si está usando Swift.


UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message" delegate:nil //or self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; [alert autorelease];


UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok",nil]; [myAlert show];