簡體   English   中英

在SwiftUI(NavigationView)中點擊按鈕時如何改變屏幕

[英]How to make the screen change when clicking on the button in SwiftUI (NavigationView)

我想讓它在按下按鈕時,屏幕 (NavigationView) 從當前屏幕變為另一個屏幕。 另外,我不太明白這是否可以通過 ContentView 來實現。 我的代碼(內容視圖):



import SwiftUI



struct acquaintance1: View {
    // Первый экран знакомства
    var body: some View {
        ZStack{
                Button (action: {})
                {
                    VStack{
                        ZStack{
                            VStack{
                                Image("scren1")
                                    .resizable()
                                    .overlay {
                                        Button {
                                           // any action
                                            
                                            let impactMed = UIImpactFeedbackGenerator(style: .heavy)
                                            impactMed.impactOccurred()
                                        } label: {
                                            Image(systemName: "arrow.right.square.fill")
                                                    .font(.system(size: 50))
                                                    .foregroundColor(Color(.systemOrange))
                                                    .position(x: 349, y: 621)
                                                    
                                        }
                                    }
                            }
                            
                        }
                    }
                }
        }
    }
}



// Второй экран знакомства
struct View1_1: View {
    var body: some View {
        NavigationLink {
            View1_2()
        } label: {
            Text("Переход на View1_2")
        }
        .navigationTitle("View1_1")
    }
}
// Третий экран знакомства
struct View1_2: View {
    var body: some View {
        Text("Последний экран")
    }
}



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



我也不明白。 這必須通過 ContentView 或 APP 結構來完成。

您想要做的是使用帶有觸發器的隱藏導航鏈接。 然后,您可以切換按鈕中的觸發器以進行導航。

這是您的代碼示例。

struct acquaintance1: View {
    @State var navigate: Bool = false
    // Первый экран знакомства
    var body: some View {
        ZStack{
                Button (action: {})
                {
                    VStack{
                        ZStack{
                            VStack{
                                Image("scren1")
                                    .resizable()
                                    .overlay {
                                        Button {
                                           // any action
                                            
                                            let impactMed = UIImpactFeedbackGenerator(style: .heavy)
                                            impactMed.impactOccurred()

                                            //trigger navigation here
                                            navigate = true
                                        } label: {
                                            Image(systemName: "arrow.right.square.fill")
                                                    .font(.system(size: 50))
                                                    .foregroundColor(Color(.systemOrange))
                                                    .position(x: 349, y: 621)
                                                    
                                        }
                                    }
                                NavigationLink(destination: View1_1(), isActive: $navigate, label: {
                                    Text("")
                                }).opacity(0.0)
                            }
                            
                        }
                    }
                }
        }
    }
}

暫無
暫無

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

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