在运行于macOS上的SwiftUI中,对于一个包含NavigationLink的项目列表,多选不起作用。如果完全相同的视图不包括NavigationLink,则可以正常工作。如何在运行于macOS上的同一列表中同时实现多选和NavigationLink?也许这需要一种不与列表绑定的构建NavigationLinks的不同方法?这是否可能?我已经尝试在选择多个行时有条件地禁用NavigationLink,但这没有效果(例如.disabled(selection.count > 1))。以下是多选不起作用的示例(请注意,在按住Shift键单击三次结果时,完整的选择会短暂出现,然后跳到最后点击的项):
struct TestListView: View {
@State var selection = Set<String>()
let options = ["a", "b", "c"]
var body: some View {
NavigationView {
List(options, id: \.self, selection: $selection) { item in
NavigationLink {
Text(String(describing: selection))
} label: {
Text(item)
}
}
}
}
}
多选正常工作的示例:
struct TestListView: View {
@State var selection = Set<String>()
let options = ["a", "b", "c"]
var body: some View {
NavigationView {
List(options, id: \.self, selection: $selection) { item in
Text(item)
}
Text(String(describing: selection))
}
}
}