2009-09-11 4 views
0

Je suis novice en développement avec l'objectif C.Comment afficher un bouton sur un UIAlertView après l'avoir affichée

Je travaille sur un morceau de code qui installe un plugin pour mon application. Il télécharge un paquet .zip, le décompresse et copie des données dans ma base de données sqlite.

J'ai un UIAlertView qui montre un UIProgressView lorsque l'application est en cours de téléchargement et décompresser, quand il finir j'ajouter au UIAlertView un bouton avec la méthode addButtonWithTitle.

Je ne sais pas pourquoi mon bouton apparaît dans le coin supérieur gauche de mon UIAlertView.

C'est un morceau de mon code:

ventana = [[UIAlertView alloc] initWithTitle:[[NSString alloc] initWithFormat: @"Instalando %@", codigo] 
              message:@"Por favor, no apague el dispositivo ni cierre la aplicación." delegate:nil cancelButtonTitle:nil otherButtonTitles: nil]; 

actividad = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
actividad.frame = CGRectMake(20, 110, 20, 20); 

progreso = [[UIProgressView alloc] initWithFrame:CGRectMake(50, 115, 215, 9)]; 
[ventana addSubview:actividad]; 
[actividad startAnimating]; 
[ventana addSubview:progreso]; 
[ventana show]; 

-- some stuff (downloading, uncompressing, updating my UIProgressView...) -- 
[progreso removeFromSuperview]; 
[actividad removeFromSuperview]; 
[ventana addButtonWithTitle:@"Aceptar"]; 
ventana.message = @"Instalación finalizada"; 

J'ai une image mais je ne peux pas poster ici parce que je suis un nouvel utilisateur. Quelqu'un sait pourquoi mon bouton apparaît dans le coin supérieur gauche de mon UIAlertView (ventana) Merci!

+0

Si vous pouvez mettre l'image sur le Web quelque part, vous pouvez poster un lien vers l'image que les gens peuvent voir. – Abizern

Répondre

3

La façon dont vous utilisez le UIAlertView est en quelque sorte ... mauvaise. Vous devriez jamais montrer un UIAlertView avec 0 boutons, et l'utiliser comme un message «ne pas éteindre le périphérique» est une mauvaise idée. L'utilisation "acceptée" pour la vue d'alerte est de dire à l'utilisateur que quelque chose d'important vient de se produire. Si vous insistez, cependant, vous devriez avoir un bouton d'annulation là par défaut afin qu'ils puissent arrêter l'opération s'ils le souhaitent, puis quand c'est fini, ajoutez le bouton. Le UIAlertView peut être confus lorsque vous essayez d'ajouter un bouton à une liste de boutons qui n'existe pas (parce que vous l'avez initialisé avec 0 boutons).

Cependant, la meilleure façon de s'y prendre serait de montrer un indicateur de progression lors du téléchargement (que vous avez) sur un UIView général avec un UILabel contenant le message. Puis, quand c'est terminé, changez l'étiquette pour montrer votre message "Instalación finalizada", et affichez un bouton en dessous. Je sais, il semble que c'est juste de reproduire ce que vous avez déjà, mais il n'y a nulle part dans votre description que je vois qui appelle à l'utilisation d'un UIAlertView.

+0

OK, j'ai mis un bouton d'annulation initial, mais mon dernier bouton d'acceptation s'affiche dans le coin supérieur gauche de l'UIAlertView. J'utilise UIAlertView parce que je veux une petite fenêtre avec le style UIAlert (bleu transparent, coins arrondis, etc.) Puis-je le faire avec un UIView? ou c'est faux aussi? Merci – Centauro12

+0

Peu importe que vous utilisiez réellement un UIAlertView ou que vous reproduisiez son aspect. D'un point de vue conceptuel, c'est la même chose pour l'utilisateur final, et c'est ce dont parle le Apple HIG lorsqu'il est indiqué quand et quand ne pas utiliser un UIAlertView. –

Questions connexes