SwiftUI - 多选列表(不是自定义列表)

Posted

技术标签:

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

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

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

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

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

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

【问题讨论】:

【参考方案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 中使用它。

以上是关于SwiftUI - 多选列表(不是自定义列表)的主要内容,如果未能解决你的问题,请参考以下文章

在 SwiftUI 中使列表行可选

SwiftUI 列表中的自定义按钮

为啥我的绑定 [String] 不会更改我的多选列表 SwiftUI

macOS 上的 SwiftUI:带有详细视图和多选的列表

jq自定义多选下拉列表框

SwiftUI 列出多个自定义行编辑选项