我试图用SwiftUI创建一个简单的多选列表。我无法使其工作。
列表有第二个参数,它是SelectionManager,所以我尝试创建一个具体的实现。但是,它永远不会被调用,行也不会突出显示。
import SwiftUI
var demoData = ["Phil Swanson", "Karen Gibbons", "Grant Kilman", "Wanda Green"]
struct SelectKeeper : SelectionManager{
var selections = Set<UUID>()
mutating func select(_ value: UUID) {
selections.insert(value)
}
mutating func deselect(_ value: UUID) {
selections.remove(value)
}
func isSelected(_ value: UUID) -> Bool {
return selections.contains(value)
}
typealias SelectionValue = UUID
}
struct SelectionDemo : View {
@State var selectKeeper = SelectKeeper()
var body: some View {
NavigationView {
List(demoData.identified(by: \.self)){ name in
Text(name)
}
.navigationBarTitle(Text("Selection Demo"))
} …Run Code Online (Sandbox Code Playgroud) 这是我根据这个答案得到的内容。该代码当前允许用户选择一个单元格,但我无法区分选择了哪个单元格或执行任何代码来响应该选择。总之,如何根据所选单元格的名称执行代码并在单击时执行。当前单击的单元格以蓝色突出显示,但我想识别它并根据该选择采取相应的操作。注意:我不想在编辑模式下选择单元格。另外,如何以编程方式选择单元格而无需单击?
struct OtherView: View {
@State var list: [String]
@State var selectKeeper = Set<String>()
var body: some View {
NavigationView {
List(list, id: \.self, selection: $selectKeeper) { item in
Text(item)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是演示选择的 gif
