SwiftUI - 如何在搜索时获取列表的选定索引?
SwiftUI - How to get the selected index of a list when you have a search?
我在 SwiftUI 中有一个列表,但问题是我有一个搜索框。
我的代码是这样的:
List {
ForEach(items.filter {
self.searchText.isEmpty ? true : [=10=].term!.contains(self.searchText)
}, id: \.self) { item in
Text(item.term!)
}
.onDelete(perform: deleteItems)
.onTapGesture(count: 1, perform: {
selectedItem = index // 1
})
}
我需要在选择项目时从该列表中获取所选项目的索引。
看到行//1了吗?我怎样才能得到 index
。
如果我正确理解了你的目标(并且项目是 Equatable),那么可以用
}, id: \.self) { item in
Text(item.term!)
.frame(maxWidth: .infinity, maxHeight: .infinity)
.contentShape(Rectangle())
.onTapGesture {
// above makes complete row tappable inside dynamic content
// so you have access here to item to find index
selectedItem = items.firstIndex { [=10=] == item }
}
}
.onDelete(perform: deleteItems)
Aperi 的解决方案并不好,因为唯一可点击的元素将是文本,而不是单元格。
正确答案是将 Text
元素包装为按钮的视图,如 this video...
所示
Button(action: {
// do something()
}) {
Text(item.term!)
}
我在 SwiftUI 中有一个列表,但问题是我有一个搜索框。
我的代码是这样的:
List {
ForEach(items.filter {
self.searchText.isEmpty ? true : [=10=].term!.contains(self.searchText)
}, id: \.self) { item in
Text(item.term!)
}
.onDelete(perform: deleteItems)
.onTapGesture(count: 1, perform: {
selectedItem = index // 1
})
}
我需要在选择项目时从该列表中获取所选项目的索引。
看到行//1了吗?我怎样才能得到 index
。
如果我正确理解了你的目标(并且项目是 Equatable),那么可以用
}, id: \.self) { item in
Text(item.term!)
.frame(maxWidth: .infinity, maxHeight: .infinity)
.contentShape(Rectangle())
.onTapGesture {
// above makes complete row tappable inside dynamic content
// so you have access here to item to find index
selectedItem = items.firstIndex { [=10=] == item }
}
}
.onDelete(perform: deleteItems)
Aperi 的解决方案并不好,因为唯一可点击的元素将是文本,而不是单元格。
正确答案是将 Text
元素包装为按钮的视图,如 this video...
Button(action: {
// do something()
}) {
Text(item.term!)
}