Как получить начальное состояние без выбора опции с помощью UIButton (кнопка всплывающего/раскрывающегося списка)?
У меня есть этот конкретный код
let genderOptions = ["Male".localized, "Female".localized]
.map { UIAction(title: $0, state: .off, handler: {_ in }) }
genderButton.changesSelectionAsPrimaryAction = true
genderButton.menu = UIMenu(children: genderOptions)
Я установил всеstate
к.off
, но по-прежнему по умолчанию выбирается первый элемент. Ниже представлена документация Apple.
Но когда я печатаюselectedElements
, он печатает следующее:
print(genderButton.menu?.selectedElements)
хотя все
UIAction
предметыstate = .off
, он печатает массив с первым выбранным элементом.
Q: Как иметь начальное состояние без выбора? Является ли всплывающая кнопка хорошим вариантом для использования здесь или я должен использовать UITextField с UIPickerView? Если бы кто-нибудь мог дать полное решение, было бы здорово.
1 ответ
Предполагая, что вы установилиchangesSelectionAsPrimaryAction = true
, вы можете добавить скрытый (с.hidden
атрибут) действие в качестве первого действия:
var genderOptions = [UIAction(title: "Select Gender", attributes: [.hidden], handler: {_ in })]
genderOptions.append(contentsOf: ["Male", "Female"]
.map { UIAction(title: $0, handler: {_ in }) })
Кнопка выбирает первое действие и использует его заголовок в качестве заголовка кнопки. Затем пользователь может выбрать одно из двух других действий. Но они не могут выбрать скрытое действие.
The .disabled
Атрибут также не позволяет пользователю выбрать действие, но опция все еще видна.
Смотрите также:UIMenuElement.Attributes