如何启动多个已展开的披露组swiftui

utugiqy6  于 2023-03-17  发布在  Swift
关注(0)|答案(1)|浏览(99)

我有一个带有字符串列表的foreach,每个元素都有一个可展开的视图。我希望所有的元素在开始时都是展开的。而且我还希望单独折叠/展开它们。

@State myLists = ["list1", "list2", "list3"]

ForEach(myLists, id: \.self){myList in

     DisclosureGroup(myList){

                Text(myList)

     }

}

我希望所有这些都在开始时已经展开,然后分别折叠它们。
我试过多个链接,但大多数都不工作unfortunately。
SwiftUI DisclosureGroup Expand each section individually-这一个工作,但它开始与所有关闭。

mqkwyuun

mqkwyuun1#

您可以创建另一个View来执行此操作,例如。

struct ContentView: View {
    let myLists = ["list1", "list2", "list3"]
    
    var body: some View {
        ForEach(myLists, id: \.self){ myList in
            ContentView2(text: myList)
        }
    }
}

struct ContentView2: View {
    let text: String
    @State private var expanded = true
    
    var body: some View {
        DisclosureGroup(text, isExpanded: $expanded){
            Text(text)
        }
    }
}

注意id: \.self对于动态@State无效,您需要使用数据的真实的id,否则当数据更改时会崩溃。

相关问题