【发布时间】:2019-11-04 11:12:47
【问题描述】:
我正在尝试使用 SwiftUI 创建一个简单的多选列表。我无法使它工作。
List 接受第二个参数,它是一个 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"))
}
}
}
#if DEBUG
struct SelectionDemo_Previews : PreviewProvider {
static var previews: some View {
SelectionDemo()
}
}
#endif
代码运行良好,但行不突出显示,并且永远不会调用 SelectionManager 代码。
【问题讨论】:
-
我的回答有帮助吗?还是我误解了你的问题?
-
我不知道 OP,但你帮了我!我没有意识到 Set 实现了 SelectionManager 协议!谢谢!
-
对不起@piebie,您的回答非常有帮助。谢谢!