Подтвердить что ты не робот

Изменить позицию кнопки отмены в UIAlertView?

Я заметил, что когда я удаляю приложение с моего домашнего экрана iPhone, появляется предупреждение, показывающее кнопку Delete слева и Cancel справа. Однако, когда я создаю функцию удаления в своем приложении с помощью 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];

Я попытался установить alert.cancelButtonIndex = 1, но это не повлияло.

4b9b3361

Ответ 1

Возможная причина, по которой Apple использовала вид предупреждения на главном экране, заключалась в том, что однажды попросила пользователей оценить приложения, которые они удаляли (не больше). Вероятно, они сделали кнопку "Отмена" более светлой, потому что это считалось деструктивным действием (удаляет приложение и его данные).

Я думаю, вы могли бы изменить названия (cancelButtonTitle:@"Delete" otherButtonTitles:@"Cancel", nil) и обрабатывать клики на этих кнопках наоборот (не уверен, что Apple сделала то же самое). Это было бы немного неудобно; как об использовании листа действий вместо?

Ответ 2

А, я просто понял, как это изменить. Аргумент cancelButtonTitle не является обязательным, поэтому вы можете добавить пользовательскую кнопку в любом месте, которое хотите, а затем обозначить это как кнопку отмены, например:

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;

Это ставит кнопку "Удалить" слева и кнопку "Отмена" справа и выделяет кнопку "Отмена".