簡體   English   中英

如何使用 NavigationLink 在 SwiftUI 視圖之間傳遞數據

[英]How to pass data between SwiftUI views using NavigationLink

我正在進行一個小型 SwiftUI 練習,以了解如何使用 NavigationLink 在視圖之間傳遞數據。 我將 ContentView 設置為在點擊 ContentView NavigationLink 后向 SecondView 發送消息。 在 SecondView 中點擊 NavigationLink,然后將消息發送到 ThirdView。 但是,當我到達 ThirdView 時,我注意到出現了一個奇怪的 UI。 請看下面的截圖:

在此處輸入圖片說明

知道為什么會出現這個 NavigationView 問題嗎? 它與在所有 3 個視圖中都有 NavigationView 相關嗎?

這是我的代碼:

內容視圖

struct ContentView: View {
    var body: some View {
        
        NavigationView {
            NavigationLink(destination: SecondView(message: "Hello from ContentView")) {
                Text("Go to Second View")
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

第二視圖

struct SecondView: View {
    var message: String
    
    var body: some View {
        Text("\(message)")
        
        NavigationView {
            NavigationLink(destination: ThirdView(message: self.message)) {
                Text("Go to Third View")
            }
        }
    }
}

struct SecondView_Previews: PreviewProvider {
    static var previews: some View {
        SecondView(message: String())
    }
}

第三視圖

struct ThirdView: View {
    var message: String
    
    var body: some View {
        NavigationView {
            Text("\(message)")
        }
    }
}

struct ThirdView_Previews: PreviewProvider {
    static var previews: some View {
        ThirdView(message: String())
    }
}

反饋表示贊賞。 謝謝!

刪除第二個導航視圖

struct SecondView: View {
    var message: String
    var body: some View {
        VStack(spacing: 100 ) {
            Text("\(message)")
            NavigationLink(destination: ThirdView(message: self.message)) {
                Text("Go to Third View")
            }
        }    
    }
}




struct ThirdView: View {
    var message: String
    
    var body: some View {

            Text("\(message)")
        }
    
}
    


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM