Как отобразить кнопку в UIAlertView после ее отображения - PullRequest
0 голосов
/ 11 сентября 2009

Я начинаю развиваться с целью С.

Я работаю над фрагментом кода, который устанавливает плагин для моего приложения. Он загружает пакет .zip, распаковывает его и копирует некоторые данные в мою базу данных sqlite.

У меня есть UIAlertView, который показывает UIProgressView, когда приложение загружается и распаковывается, когда оно заканчивается, я добавляю к UIAlertView кнопку с методом addButtonWithTitle.

Я не знаю, почему моя кнопка появляется в верхнем левом углу моего UIAlertView.

Это часть моего кода:

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

У меня есть изображение, но я не могу опубликовать его здесь, потому что я новый пользователь.

Кто-нибудь знает, почему моя кнопка появляется в верхнем левом углу моего UIAlertView (ventana) Спасибо!

1 Ответ

3 голосов
/ 11 сентября 2009

То, как вы используете UIAlertView, отчасти ... плохо. Вы должны никогда показывать UIAlertView с 0 кнопками, и использовать его как сообщение «не выключать устройство» - плохая идея. «Принятое» использование для представления предупреждений - сообщить пользователю о том, что только что произошло. Однако, если вы настаиваете, у вас должна быть кнопка отмены по умолчанию, чтобы они могли остановить операцию, если захотят, затем, когда она будет завершена, добавьте кнопку. UIAlertView может быть сбит с толку при попытке добавить кнопку в список несуществующих кнопок (поскольку вы инициализировали ее с помощью кнопок 0).

Однако лучший способ сделать это - показать индикатор прогресса при загрузке (который у вас есть) общего UIView с UILabel, содержащим сообщение. Затем, когда он будет завершен, измените метку, чтобы показать ваше сообщение «Instalación finalizada», и отобразите кнопку под ним. Я знаю, кажется, что это просто повторяет то, что у вас уже есть, но в вашем описании нигде нет такого, что бы я требовал использования UIAlertView.

...