【问题标题】:Hiding a SwiftUI View from another SwiftUI View从另一个 SwiftUI 视图中隐藏一个 SwiftUI 视图
【发布时间】:2020-06-21 19:58:37
【问题描述】:

当使用 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()
            }
    }

}

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

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

【问题讨论】:

    标签: ios swift animation swiftui


    【解决方案1】:

    正如 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")
                }
            }
        }
    }
    

    【讨论】:

    • 非常感谢!
    【解决方案2】:

    从您的主视图/根视图中,您可以创建 @State 变量,并将其作为 @Binding 变量传递给子视图。

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

    【讨论】:

      猜你喜欢
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2021-05-02
      • 2022-08-17
      相关资源
      最近更新 更多