2010-12-16 23 views
12

Noté que cuando eliminé una aplicación de la pantalla de inicio de mi iPhone, la vista de alerta que aparece muestra un botón Eliminar a la izquierda y Cancelar a la derecha. Sin embargo, cuando construyo una función de eliminación dentro de mi aplicación usando UIAlertView, los botones solo parecen mostrarse con Cancelar a la izquierda y Eliminar a la derecha.cambiar la posición del botón cancelar en UIAlertView?

Me gustaría que mi aplicación sea compatible con el sistema operativo, pero no puedo encontrar la manera de hacer que el botón Cancelar aparecen por primera vez. ¿Alguien sabe?

UIAlertView *alert = [[UIAlertView alloc] 
         initWithTitle:@"Delete Song" 
         message:@"Are you sure you want to delete this song? This will permanently remove it from your database." 
         delegate:self 
         cancelButtonTitle:@"Cancel" 
         otherButtonTitles:@"Delete", nil]; 

Intenté configurar alert.cancelButtonIndex = 1, pero eso no tuvo ningún efecto.

Respuesta

4

Una posible razón de Apple utiliza una vista de alerta en la pantalla principal se debió a que una vez le preguntó a los usuarios valorar las aplicaciones que se Extracción (no más). Probablemente hicieron que el botón Cancelar sea el más claro porque se consideró una acción destructiva (elimina una aplicación y sus datos).

Supongo que podría revertir los títulos (cancelButtonTitle:@"Delete" otherButtonTitles:@"Cancel", nil) y manejar los clics en esos botones al revés (no estoy seguro si Apple hizo lo mismo). Sin embargo, eso sería un poco incómodo; ¿Qué hay de usar una hoja de acción en su lugar?

+0

Hmm, ¿sabes lo que es estándar para otras partes del sistema operativo? No puedo pensar en otros ejemplos de dónde buscar esto. De todos modos, si eliminar una aplicación de la pantalla de inicio utiliza una configuración no estándar, entonces no es necesario que coincida. – arlomedia

+0

@arlomedia: No he visto ninguna otra alerta de eliminación. Tanto el SMS como las alertas del calendario colocan sus botones de cancelación (Cerrar) a la izquierda, al igual que el SDK. AFAIK, en cualquier otro lugar donde se elimine algo involucrado (fotos, contactos, eventos del calendario, notas, listas de reproducción del iPod) usa hojas de acción. – BoltClock

+0

De acuerdo, lo dejaré como está. Gracias por la info. – arlomedia

52

Ah, acabo descubierto la manera de cambiar esto. El argumento cancelButtonTitle es opcional, por lo que puede añadir un botón personalizado en cualquier posición que desee y luego indicar que como el botón de cancelación, así:

UIAlertView *alert = [[UIAlertView alloc] 
         initWithTitle:@"Delete Song" 
         message:@"Are you sure you want to delete this song? This will permanently remove it from your database." 
         delegate:self 
         cancelButtonTitle:nil 
         otherButtonTitles:@"Delete", @"Cancel", nil]; 
alert.cancelButtonIndex = 1; 

que pone el botón Eliminar el botón Cancelar izquierda ya la a la derecha y resalta el botón Cancelar.

+3

+1 Agradable, definitivamente lo que Apple pretendía sobre mi sugerencia. – BoltClock

+0

Pensé que me estaba volviendo loco hasta que vi esto. Intenté usar @ "NO" para cancelar el botón y @ "SÍ" como otros títulos de botones pero buttonIndex 0 fue el botón cancelar. Realmente no puedo ver eso como algo más que un error en la parte de las manzanas, pero ¿quién soy para cuestionar lo que no puedo entender? Sin embargo, este enfoque funciona perfectamente, ¡Gracias! – FrostyL

+4

Me parece que esto ya no funciona en iOS 8.3 (en el Simulador), pero funciona bien en iOS 7.1. Esto a pesar del hecho de que algunas alertas de Apple todavía * hacen * ponen "Cancelar" a la derecha, incluso en 8.3. (¡Me pregunto cómo lo hacen!) –

Cuestiones relacionadas