簡體   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