У меня есть массив строк, которые я хочу использовать для заголовков кнопок в UIActionSheet. К сожалению, аргумент otherButtonTitles: при вызове метода принимает список строк переменной длины, а не массив.
Итак, как я могу передать эти заголовки в UIActionSheet? Предложенный мной обходной путь - передать nil в otherButtonTitles :, а затем указать заголовки кнопок индивидуально с помощью addButtonWithTitle :. Но при этом возникает проблема перемещения кнопки «Отмена» на первую позицию в UIActionSheet, а не на последнюю; Я хочу, чтобы он был последним.
Есть ли способ 1) передать массив вместо списка переменных строк или 2) переместить кнопку отмены в нижнюю часть таблицы UIActionSheet?
Спасибо.
ios
iphone
uialertview
uiactionsheet
Грег Малетик
источник
источник
Ответы:
Я заставил это работать (вам просто нужно, быть в порядке с обычной кнопкой, и просто добавьте ее после:
источник
cancelButton
не красный.destructiveButton
Красный.[UIActionSheet addButtonWithTitle]
которая, похоже, неправильно установленаfirstOtherButtonIndex
(которую следует использовать в делегате,actionSheet:clickedButtonAtIndex:
а не в жестком кодировании 0 или подобном). Неприязнь с преобразованиемNSArray
вva_list
не звучит как хорошее решение. :-( Этот API чертовски уродлив.Одно небольшое примечание: [actionSheet addButtonWithTitle:] возвращает индекс этой кнопки, поэтому для безопасности и «чистоты» вы можете сделать следующее:
источник
destructiveButtonIndex
для негоВзяв ответы Джабы и Ника и расширив их немного дальше. Чтобы включить в это решение кнопку разрушения:
источник
Есть быстрый вариант ответа:
Чтобы выбрать значение, добавьте делегата в ViewController:
И реализуем метод clickedButtonAtIndex
источник