【问题标题】:SwiftUI - list with multi-select (not a custom one)SwiftUI - 多选列表(不是自定义列表)
【发布时间】:2021-05-14 04:00:45
【问题描述】:

如何在 SwiftUI 中创建多选列表? 我知道我可以像这样定制一个:https://stackoverflow.com/a/57023746/12315994

但是 SwiftUI 中是否已经存在默认设置?

以下是 Apple 邮件应用中的多选控件示例:

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

Apple 的 Reminders App 中有非常相似的控件:

【问题讨论】:

    标签: ios swift list swiftui multi-select


    【解决方案1】:

    是的,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)
            }
        }
    }
    
    

    【讨论】:

    • 太棒了!我不知道@State private var isEditMode: EditMode = .active。 2 个问题: 1. 您可以在表单中使用您的解决方案吗?因此,例如,用户将创建新项目,并且会看到很少的(多)选择选项。后来我可以保存有关每个项目选择了什么的信息? 2. 你可以改变默认灰色的选定项目的背景颜色吗?
    • 1) 在我尝试将其嵌入Form 的有限实验中,它似乎不起作用。 2) 不是我知道的。也许有某种列表样式和修饰符的组合,但没有什么能以明显的方式起作用。
    • 谢谢。我将尝试如何在 Forms 中使用它。
    猜你喜欢
    • 2020-05-15
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2019-11-28
    • 1970-01-01
    • 2013-01-08
    相关资源
    最近更新 更多