繁体   English   中英

从另一个 SwiftUI 视图中隐藏 SwiftUI 视图

[英]Hiding a SwiftUI View from another SwiftUI View

当使用 SwiftUI 点击按钮时,我想执行一个操作来隐藏屏幕上的元素。

例如,假设我的屏幕上有 2 个图像、一个文本和一个按钮。

如果我点击按钮,我希望其他元素在屏幕外设置动画。 再次点击按钮,它们就会动画回到屏幕上。

每个元素都在它们自己的视图中创建,该视图位于其自己的文件中。 有没有办法从另一个视图访问一个视图?

下面是一个例子:

struct buttonView : View {

    @State private var isShowingImageView = false

    @Binding var myImage: ImageView

    var body: some View {
        Button(action: {
                    self.isShowingImageView.toggle()
                }) {
                    HStack(spacing: 18) {
                        Image("button-icon")
                        Text("Press Me")
                    }

                }

            if isShowingImageView {
                myImage.hidden()
            }
    }

}

我的图像是在它自己的结构/视图中创建的,当我按下按钮时,我想隐藏该图像。

现在它并没有隐藏它,只是我的按钮所在的视图有点动画。

正如 Sam 已经说过的,您可以结合使用@State@Binding

struct ContentView: View {

    @State private var show = true

    var body: some View {
        VStack {
            View1(show: $show)
            View2(show: $show)
        }
    }
}

struct View1: View {

    @Binding var show: Bool

    var body: some View {
        VStack {
            if show {
                Text("Text1")
            }

            Text("Text2")
        }
    }
}

struct View2: View {

    @Binding var show: Bool

    var body: some View {
        VStack {
            Text("Text3")

            if show {
                Text("Text4")
            }

            Button(action: {
                self.show.toggle()
            }) {
                Text("Toogle show")
            }
        }
    }
}

从你的主/根视图,您可以创建@State变量传递到子视图@Binding变量。

如果没有看到您的代码,我无法为您提供更多细节,但这可能的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM