Изменить позицию кнопки отмены в 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, но это не повлияло.
Ответы
Ответ 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;
Это ставит кнопку "Удалить" слева и кнопку "Отмена" справа и выделяет кнопку "Отмена".