我有从核心数据填充的此列表:
List {
ForEach(items.filter {
self.searchText.isEmpty ? true : $0.term!.contains(self.searchText)
}, id: \.self) { item in
Button(action: {
selectedItem = items.firstIndex { $0 == item }!
changeDescription()
print(selectedItem)
}) {
Text(item.term!)
.font(fontItems)
.disabled(true)
.foregroundColor(items[selectedItem] == item ? .black : .white)
}
最后一行
.foregroundColor(items[selectedItem] == item ? .black : .white)
我试图检测是否单击了该按钮。在这种情况下,我想将字体颜色更改为黑色。
当我尝试滚动显示以下消息时,该应用程序在该行崩溃:
__boundsFail: index 18446744073709551615 beyond bounds [0 .. 605]'
我是SwiftUI的新手。
我怎么做?
而不是存储索引(在完整数组和过滤后的数组中有所不同),而不是item
直接存储(只需使其类型为Equatable)即可,即
Button(action: {
selectedItem = item // << store item in selection
changeDescription()
print(selectedItem)
}) {
Text(item.term!)
.font(fontItems)
.disabled(true)
.foregroundColor(selectedItem == item ? .black : .white) // compare item
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句