2010-12-16 4 views
12

J'ai remarqué que lorsque je supprime une application de mon écran d'accueil de l'iPhone, la vue d'alerte qui apparaît affiche un bouton Supprimer sur la gauche et Annuler sur la droite. Cependant, quand je construis une fonction de suppression dans mon application en utilisant UIAlertView, les boutons semblent seulement afficher avec Annuler sur la gauche et Supprimer sur la droite. Je voudrais que mon application soit compatible avec le système d'exploitation, mais je n'arrive pas à comprendre comment faire apparaître le bouton Annuler en premier. Est-ce que quelqu'un sait?Modifier la position du bouton Annuler dans UIAlertView?

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]; 

J'ai essayé de définir alert.cancelButtonIndex = 1, mais cela n'a eu aucun effet.

Répondre

4

Une raison possible Apple a utilisé une vue d'alerte sur l'écran d'accueil parce qu'il demandait une fois aux utilisateurs d'évaluer les applications qu'ils supprimaient (plus maintenant). Ils ont probablement fait du bouton Annuler le bouton de couleur claire parce que cela était considéré comme une action destructrice (supprime une application et ses données).

Je suppose que vous pourriez inverser les titres (cancelButtonTitle:@"Delete" otherButtonTitles:@"Cancel", nil) et gérer les clics sur ces boutons dans l'autre sens (pas sûr si Apple a fait la même chose). Ce serait un peu gênant cependant; que diriez-vous d'utiliser une feuille d'action à la place?

+0

Hmm, savez-vous ce qui est standard pour les autres parties de l'OS? Je ne peux pas penser à d'autres exemples d'où chercher ceci. Quoi qu'il en soit, si la suppression d'une application de l'écran d'accueil utilise une configuration non standard, alors je n'ai pas besoin de faire correspondre cela. – arlomedia

+0

@arlomedia: Je n'ai pas vu d'autres alertes de suppression autour. Les alertes de SMS et de calendrier placent leurs boutons d'annulation (Fermer) sur la gauche, tout comme le SDK. AFAIK, partout ailleurs, la suppression de quelque chose est impliqué (photos, contacts, événements de calendrier, notes, listes de lecture iPod) utilise des feuilles d'action. – BoltClock

+0

D'accord, je vais juste le laisser tel quel. Merci pour l'info. – arlomedia

52

Ah, je viens de comprendre comment changer cela. L'argument cancelButtonTitle est facultatif, vous pouvez ajouter un bouton personnalisé quelle que soit la position que vous voulez et ensuite désigner que le bouton d'annulation, comme ceci:

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; 

qui met le bouton Supprimer la gauche et le bouton Annuler sur la à droite et met en surbrillance le bouton Annuler.

+3

+1 Nice, définitivement ce qu'Apple avait prévu sur ma suggestion. – BoltClock

+0

Je pensais que je devenais fou jusqu'à ce que je voyais ça. J'ai essayé d'utiliser @ "NO" pour le bouton d'annulation et @ "YES" comme les autres titres de boutons, mais buttonIndex 0 était le bouton d'annulation. Je ne peux vraiment pas voir cela comme autre chose qu'un bug sur la partie des pommes, mais qui suis-je pour remettre en question ce que je ne peux pas comprendre hein? Cette approche fonctionne parfaitement, merci! – FrostyL

+4

Je trouve que cela ne fonctionne plus sur iOS 8.3 (dans le simulateur), mais fonctionne bien sur iOS 7.1. Ceci malgré le fait que certaines alertes Apple * mettent * toujours "Annuler" sur la droite, même en 8.3. (Je me demande comment ils le font!) –

Questions connexes