2012-04-21 15 views
9

Tengo un UIAlertView que se muestra con este código que le pide que califique la aplicación en la tienda de aplicaciones.Acción del botón UIAlertView?

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Rate on the Appstore!" 
               message:@"" 
               delegate:self 
             cancelButtonTitle:@"Later" 
             otherButtonTitles:@"OK", nil]; 
[alert show]; 
[alert release]; 

Pero no puedo encontrar la manera de añadir una acción al botón Aceptar que te lleva a la aplicación en la AppStore .

Respuesta

25

¿Qué tal esto?

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    if (buttonIndex != [alertView cancelButtonIndex]) { 
     NSLog(@"Launching the store"); 
     //replace appname with any specific name you want 
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/appname"]]; 
    } 
} 
+0

Cambie el nombre del método a clickedButtonAtIndex ... . Puede existir la posibilidad de que las personas copien el mismo nombre de método mencionado anteriormente y donde el método nunca se llamará ... –

+0

Solo un punto, en ViewController.h, agregue: después de @interface ViewController: UIViewController entonces se ve así: "@interface ViewController: UIViewController " – JomanJi

+0

Entonces, ¿dónde puedo llamar a este método? ¿Se va a llamar por sí solo, ya que agregamos UIViewController en el archivo de encabezado, o tenemos que hacer algo como [self alertView ...] en alguna parte? – SteBra

9

quieres algo como lo siguiente:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    if (buttonIndex == 0) { 
     NSLog(@"Clicked button index 0"); 
     // Add the action here 
    } else { 
     NSLog(@"Clicked button index other than 0"); 
     // Add another action here 
    } 
} 

NSLog de aparecer en la consola cuando se pulsa un botón y ayudar a cabo cada vez que se desea depurar/prueba nada.

Luego de la acción que desea, que iba a escribir algo como:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"url_to_app_store"]]; 
+0

a una alerta de 2 botón, en lugar de comprobar si el índice es botón '0', que se quiere comprobar si el botón de cancelación se ha pulsado o no, si' (buttonIndex! = [AlertView cancelButtonIndex]) '. – chown

+0

Estaba agregando ayuda adicional para verificar en el futuro si se presionarían otros botones, luego podría ver y continuar fácilmente. – Domness

+0

Cambie el nombre del método a clickedButtonAtIndex .... Puede existir la posibilidad de que las personas copien el mismo nombre de método mencionado anteriormente y donde el método nunca se llamará ... –

0

en swift: utilice este bloque de código para mostrar el mensaje de alerta.

let alert = UIAlertController(title: "Alert", message: "This is an alert message", preferredStyle: UIAlertControllerStyle.Alert) 

let action = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: {(action:UIAlertAction) in print("This is in alert block") 
}) 

alert.addAction(action) 
self.presentViewController(alert, animated: true, completion: nil) 
Cuestiones relacionadas