ios - 选择器控件绑定到索引而不是标记
问题描述
我遇到了一个问题,我的 Picker 控件绑定到项目的索引而不是标记中指定的值。我正在使用 WatchOS。
Picker("Hour:", selection: $hour) {
ForEach((twentyFourHour ? 0 : 1)..<(twentyFourHour ? 24 : 13)) {
Text(String(format: twentyFourHour ? "%02d" : "%d", $0))
.tag($0)
}
}
当我
print("p: \(period) hr: \(hr) hour: \(hour)")
我明白了
p: am hr: 0 hour: 0
我已经通过向标签值添加任意值进行测试,它似乎仍然绑定到索引。我也尝试过使用“{ i in”语法,结果相同。
我基于 Apple 文档: https ://developer.apple.com/documentation/swiftui/picker?changes=latest_minor
解决方案
问题是循环不认为原始类型是可识别的。因此,您需要将标识符明确定义为原始值,如下所示:
Picker("Hour:", selection: $hour) {
ForEach((twentyFourHour ? 0 : 1)..<(twentyFourHour ? 24 : 13), id:\.self) {
Text(String(format: twentyFourHour ? "%02d" : "%d", $0))
.tag($0)
}
}
关键的补充是:
id:\.self
推荐阅读
- javascript - Vue.js + TypeScript 组件注册
- c++ - 函数参数变量是否总是需要 & 或 * 运算符?
- python - Python 3、bs4、网络爬虫;连接太网站时出错
- mysql - MySQL触发器从一个表中添加/删除,取决于另一个表中的条目
- jms - 具有不同主机的多个 JMS 侦听器与 Spring
- python - Pandas groupby 在使用 sum() 时抛出错误
- ios - 自定义委托方法在objective-c中不起作用
- odoo - Odoo 中的产品成本未随价格变化而更新
- python-3.x - 检测在 python 中打开了哪些应用程序
- python - 如何在机器人框架中运行特定的测试用例