如何在SwiftUI中创建一个可展开的列表?

7 min read

在SwiftUI中创建可展开的列表,可以使用ListDisclosureGroup组合。

首先,你需要创建一个List视图,用于显示列表项。在List中,你可以添加ForEach来循环遍历数据,并为每个数据项创建一个可展开的DisclosureGroup

以下是一个简单的示例代码:

struct ContentView: View {
    let items = ["Item 1", "Item 2", "Item 3"]
    @State var isExpanded = false
    
    var body: some View {
        List {
            ForEach(items, id: \.self) { item in
                DisclosureGroup(isExpanded: $isExpanded) {
                    Text("Expanded content for \(item)")
                } label: {
                    Text(item)
                }
            }
        }
        .listStyle(InsetGroupedListStyle())
    }
}

在这个示例中,items是一个简单的字符串数组,用于表示列表中的每个项目。isExpanded是一个布尔值,用于控制DisclosureGroup的展开和折叠状态。

List视图中,使用ForEach循环遍历items数组,并为每个项目创建一个DisclosureGroup。在DisclosureGroup中,将isExpanded绑定到其展开状态,并在标签中显示项目名称。在扩展内容中,只显示了一个简单的文本字符串用于演示。

最后,将listStyle()方法应用到List视图中,以使其外观符合InsetGroupedListStyle样式。

这样,当用户单击列表中的项目时,DisclosureGroup将展开或折叠,显示或隐藏其扩展内容。