Swiftui 快捷界面显示/隐藏部分

Swiftui 快捷界面显示/隐藏部分,swiftui,xcode11,swiftui-list,Swiftui,Xcode11,Swiftui List,我试图建立一个嵌套层菜单,如草图或Photoshop。 下面是我到目前为止所做的,使用VStack和部分来分组层 现在,当点击分组图层箭头时,我尝试显示/隐藏子图层,以便: 有人知道怎么做吗?非常感谢您的帮助!: 我向您展示了一个代码片段,它是可行的,您可以修改它以查看更好的结果 结构节点:可识别{ 变量id=UUID 变量值:字符串= 变量子项:[Node]=[] 变量isSubNode:Bool{ 返回children.count!=0 } } 结构节点视图:视图{ 变量节点:节点 变量级别

我试图建立一个嵌套层菜单,如草图或Photoshop。 下面是我到目前为止所做的,使用VStack和部分来分组层

现在,当点击分组图层箭头时,我尝试显示/隐藏子图层,以便:


有人知道怎么做吗?非常感谢您的帮助!:

我向您展示了一个代码片段,它是可行的,您可以修改它以查看更好的结果

结构节点:可识别{ 变量id=UUID 变量值:字符串= 变量子项:[Node]=[] 变量isSubNode:Bool{ 返回children.count!=0 } } 结构节点视图:视图{ 变量节点:节点 变量级别:Int @状态变量showChildren:Bool=false var body:一些观点{ 节头:HStack{
ForEach0..我向您展示了一个代码片段,它是可行的,您可以修改它以查看更好的结果

结构节点:可识别{ 变量id=UUID 变量值:字符串= 变量子项:[Node]=[] 变量isSubNode:Bool{ 返回children.count!=0 } } 结构节点视图:视图{ 变量节点:节点 变量级别:Int @状态变量showChildren:Bool=false var body:一些观点{ 节头:HStack{
ForEach0..你可以这样做,我只是在第一节做的…当然你也应该为三角形制作动画…;但这是你的任务

struct NestedList: View {

    @State var collapsedSection1 = false

    var body: some View {


        ScrollView {

            VStack {
                Section (header:   HStack {
                    Image(systemName: "arrowtriangle.down")
                        .accentColor(.black)
                    Text("Layer Group 1")

                }) {
                    if collapsedSection1 {
                        EmptyView()
                    } else {
                        Group {
                            HStack {
                                Image(systemName: "arrowtriangle.right")
                                    .accentColor(.black)
                                Text("Layer 1")

                            }

                            HStack {
                                Image(systemName: "arrowtriangle.right")
                                    .accentColor(.black)
                                Text("Layer 1")

                            }
                        }
                    }
                }.onTapGesture {
                    withAnimation {
                        self.collapsedSection1.toggle()
                    }
                }

                Section (header:   HStack {
                    Image(systemName: "arrowtriangle.down")
                        .accentColor(.black)
                    Text("Layer Group 2")

                }) {

                    HStack {
                        Image(systemName: "arrowtriangle.right")
                            .accentColor(.black)
                        Text("Layer 1")

                    }

                    HStack {
                        Image(systemName: "arrowtriangle.right")
                            .accentColor(.black)
                        Text("Layer 1")

                    }


                }
            }
        }
    }
}

struct NestedList_Previews: PreviewProvider {
    static var previews: some View {
        NestedList()
    }
}

你们可以这样做,我只是在第一部分做的…当然你们也应该给三角形设置动画…;但这是你们的任务

struct NestedList: View {

    @State var collapsedSection1 = false

    var body: some View {


        ScrollView {

            VStack {
                Section (header:   HStack {
                    Image(systemName: "arrowtriangle.down")
                        .accentColor(.black)
                    Text("Layer Group 1")

                }) {
                    if collapsedSection1 {
                        EmptyView()
                    } else {
                        Group {
                            HStack {
                                Image(systemName: "arrowtriangle.right")
                                    .accentColor(.black)
                                Text("Layer 1")

                            }

                            HStack {
                                Image(systemName: "arrowtriangle.right")
                                    .accentColor(.black)
                                Text("Layer 1")

                            }
                        }
                    }
                }.onTapGesture {
                    withAnimation {
                        self.collapsedSection1.toggle()
                    }
                }

                Section (header:   HStack {
                    Image(systemName: "arrowtriangle.down")
                        .accentColor(.black)
                    Text("Layer Group 2")

                }) {

                    HStack {
                        Image(systemName: "arrowtriangle.right")
                            .accentColor(.black)
                        Text("Layer 1")

                    }

                    HStack {
                        Image(systemName: "arrowtriangle.right")
                            .accentColor(.black)
                        Text("Layer 1")

                    }


                }
            }
        }
    }
}

struct NestedList_Previews: PreviewProvider {
    static var previews: some View {
        NestedList()
    }
}

谢谢Chris!我把E.Coms标记为答案,因为它提供了一个更接近我所寻找的Hanks Chris的解决方案!我把E.Coms标记为答案,因为它提供了一个更接近我所寻找的解决方案