Swift 我如何知道列表中单击了某个特定按钮
我有这个列表,由核心数据填充:Swift 我如何知道列表中单击了某个特定按钮,swift,swiftui,Swift,Swiftui,我有这个列表,由核心数据填充: List { ForEach(items.filter { self.searchText.isEmpty ? true : $0.term!.contains(self.searchText) }, id: \.self) { item in Button(action: { selectedItem = items.firstIndex { $0 == ite
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的新手
如何做到这一点?不存储索引(在完整数组和过滤数组中有所不同),而是直接存储项
(只需使其类型相等),即
按钮(操作:{
selectedItem=item//Brilliant!像这样容易多了。我无法给你足够的票数!!!!!!!!!!!!!
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
}