You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode 13中MenuPickerStyle样式Picker选中值不显示如何解决

问题原因

Xcode 13 对 MenuPickerStyle 的内部渲染逻辑做了调整,默认不再监听 selection 绑定值的变化主动刷新 Picker 的标签内容,因此会出现选中属性后按钮文本不更新的问题。

解决方案

方案1:添加id修饰符触发重绘

仅需要给现有 Picker 新增 id() 修饰符,绑定选中属性 attribute,只要属性值发生变化就会触发 Picker 整体重绘,即可正常更新标签显示,修改成本最低:

Picker(selection: $attribute,
       label: Text(NSLocalizedString("Attribute: ", comment: "") + "\(attribute)")){
    ForEach(attributes, id: \.self){
        Text($0)
    }
}
.pickerStyle(MenuPickerStyle())
.id(attribute) // 新增该行代码

方案2:使用Menu自定义实现

如果需要更高的兼容性和自定义空间,可以直接用 Menu 组件自行构建,完全自主控制标签的刷新逻辑:

Menu {
    Picker("", selection: $attribute) {
        ForEach(attributes, id: \.self){
            Text($0)
        }
    }
} label: {
    Text(NSLocalizedString("Attribute: ", comment: "") + "\(attribute)")
}

两种方案均可恢复旧版本的显示效果,选中属性后实时展示在按钮旁。


内容的提问来源于stack exchange,提问作者ruzaykina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:24:01