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
相关产品推荐
相关产品推荐

