swift 如何使用UIButton(弹出/下拉按钮)获得未选择任何选项的初始状态?

dhxwm5r4  于 2023-02-28  发布在  Swift
关注(0)|答案(1)|浏览(150)

我有个特别的密码

let genderOptions = ["Male".localized, "Female".localized]
    .map { UIAction(title: $0, state: .off, handler: {_ in }) }
genderButton.changesSelectionAsPrimaryAction = true
genderButton.menu = UIMenu(children: genderOptions)

我已经把UIActionstate全部设置为.off,但是它仍然默认选择第一项,下面是苹果的文档。

但是当我打印selectedElements时,它会打印以下内容:

print(genderButton.menu?.selectedElements)


即使所有UIActionstate = .off,它也会打印一个数组,其中第一项为选定项。

**Q:如何在没有任何选择的情况下拥有初始状态?弹出按钮是一个很好的选择吗?或者我应该在UIPickerView中使用UITextField?**如果有人能给予一个完整的解决方案,那就太好了。

0pizxfdo

0pizxfdo1#

假设您已经设置了changesSelectionAsPrimaryAction = true,您可以添加一个隐藏的(带有.hidden属性)操作作为第一个操作:

var genderOptions = [UIAction(title: "Select Gender", attributes: [.hidden], handler: {_ in })]
genderOptions.append(contentsOf: ["Male", "Female"]
    .map { UIAction(title: $0, handler: {_ in }) })

按钮选择第一个动作,并使用它的标题作为按钮的标题。然后用户可以选择其他两个动作中的一个。但是他们不能选择隐藏的动作。
.disabled属性还阻止用户选择操作,但选项仍然可见。
另请参阅:UIMenuElement.Attributes

相关问题