Как получить начальное состояние без выбора опции с помощью 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

Другие вопросы по тегам