SwiftUI - 带有 multi-select 的列表(不是自定义的)

SwiftUI - list with multi-select (not a custom one)

如何在 SwiftUI 中使用 multi-select 制作列表? 我知道我可以像这样定制一个:

但是 SwiftUI 中已经有一个默认的吗?

这是 Apple 邮件应用程序中的多select 控件示例:

当您 select 多张照片时,Apple 照片中也会使用相同的控件。 这些控件也在 Apple 的官方 iOS Sketch Library 中,您可以从这里下载:https://developer.apple.com/design/resources/

Apple 的 Reminders 应用程序中有非常相似的控件:

是的,SwiftUI的列表内置了这个能力,需要为列表的selection参数提供一个Set,才能实现多选。我还默认将编辑模式设置为 .active,这是可选的。

struct ContentView: View {
    @State private var selection = Set<String>()
    @State private var isEditMode: EditMode = .active
    
    let items = [
        "Item 1",
        "Item 2",
        "Item 3",
        "Item 4"
    ]

    var body: some View {
        NavigationView {
            List(items, id: \.self, selection: $selection) { name in
                Text(name)
            }
            .toolbar {
                EditButton()
            }
            .environment(\.editMode, self.$isEditMode)
        }
    }
}