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

SwiftUI嵌入Menu的Picker初始未对选中选项显示对勾如何解决

这个是SwiftUI的原生行为,当Picker嵌套在Menu内部时,默认不会自动触发选中标记的渲染,你没有遗漏基础配置,按下面两种场景选择解决方案即可:

场景1:Menu内仅放置这一个Picker

不需要额外嵌套Menu,直接使用.menuStyle的Picker自定义label即可,既可以实现自定义对外展示内容,也能原生支持选中对勾显示,代码如下:

Picker(selection: $food.servingSize.unit) {
    ForEach(units) { unit in
        Text(unit.name).tag(unit)
    }
} label: {
    Text(food.servingSize.unit.shorthand)
}
.pickerStyle(.menu)

场景2:Menu内还有其他操作项,必须嵌套Picker

给嵌套的Picker显式指定pickerStyle为.menu即可正常显示选中对勾:

Menu {
    Picker("Unit", selection: $food.servingSize.unit) {
        ForEach(units) { unit in
            Text(unit.name).tag(unit)
        }
    }
    .pickerStyle(.menu)
    // 此处可继续添加其他Menu选项
} label: {
    Text(food.servingSize.unit.shorthand)
}

如果是适配iOS 14等旧版本系统,上述方案无效的话,可以手动渲染选中标记:

Menu {
    Picker("Unit", selection: $food.servingSize.unit) {
        ForEach(units) { unit in
            HStack {
                if unit == food.servingSize.unit {
                    Image(systemName: "checkmark")
                }
                Text(unit.name)
            }
            .tag(unit)
        }
    }
} label: {
    Text(food.servingSize.unit.shorthand)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:15:07