style alertas iphone xcode uialertview

iphone - alertas - uialertcontroller styles



Botón de detección de clic con UIAlertView (6)

Creo que si desea mostrar una nueva vista de alerta en el evento de clic de botón de una vista de alerta existente, sería mejor usar

- (void) alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { }

método delegado en lugar de

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

Estoy intentando llamar y alertar cuando se presiona un botón. yo uso esto :

-(IBAction)Add { UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"add button pressed" message:@"Add to record" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil ]; [alert show]; [alert release]; }

Ok, no hay problema aquí, dos botones subieron, OK y cancelan. Ahora quiero detectar qué botón está presionado yo uso:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { // the user clicked one of the OK/Cancel buttons if (buttonIndex == 0) { //just to show its working, i call another alert view UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"OK WORKIng well" message:@"no error" delegate:nil cancelButtonTitle:@"IWORKS" otherButtonTitles:@"NO PRB", nil]; [alert show]; [alert release]; } else { NSLog(@"cancel"); } }

Ahora aquí está el problema. no puedo detectar qué botón está presionado; la segunda vista de alerta no se muestra. He revisado el código un par de veces, no parece haber ningún problema con él. no hay error / advertencia también.


El buttonIndex de 0 es el botón de cancelar. Yo recomendaría usar:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { if (buttonIndex == 0) { NSLog(@"cancel"); } else { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"OK works" message:@"no error" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; [alert release]; } }


Este es tu código que usé y también agregué un poco de mi código. **

-(IBAction) Add { UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"add button pressed" message:@"Add to record" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; alert.tag=101;//add tag to alert [alert show]; [alert release]; }

Ahora, cuando presiona el botón de alerta, llamará clickedButtonAtIndex pero debería haber un identificador para cada alerta. Así que agrega la etiqueta y luego

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex** { // the user clicked one of the OK/Cancel buttons if(alertView.tag == 101) // check alert by tag { if (buttonIndex == 0) { //just to show its working, i call another alert view UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"OK WORKIng well" message:@"no error" delegate:nil cancelButtonTitle:@"IWORKS" otherButtonTitles:@"NO PRB", nil]; [alert show]; [alert release]; } else { NSLog(@"cancel"); } } }

Espero eso ayude.


Para detectar que el botón hace clic, la vista de alerta debe tener un delegado asociado, por ejemplo,

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"add button pressed" message:@"Add to record" delegate:self // <------ cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];


Si prefiere que su código sea más limpio y no dependa del delegado, debe probar la implementación de bloques de UIAlertView:

https://github.com/steipete/PSAlertView

Sin embargo, los bloques solo son compatibles con dispositivos iOS 4+.


1) .h file @interface MyClassViewController:<UIAlertViewDelegate> 2) .m file UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Note" message:@"some message" delegate:self // must be self to call clickedButtonAtIndex cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; 3) - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { if (buttonIndex == [alertView cancelButtonIndex]) { NSLog(@"The cancel button was clicked from alertView"); } else { } }