SwiftUI-按钮操作以发出警报并采取行动

SwiftUI-按钮操作以发出警报并采取行动,swiftui,Swiftui,我正试图根据某个条件发送警报,但无论条件如何,导航链接都会执行。我希望能被拦截 目标: 如果条件不是me,则不要启动新视图 正在启动新视图,然后发出警报 我确信我的代码是错误的,但我不确定我应该如何实现这一点 提前谢谢 var body: some View { NavigationView { VStack { Button(action: {}) { //NavigationLink(destination: s

我正试图根据某个条件发送警报,但无论条件如何,导航链接都会执行。我希望能被拦截

目标:

  • 如果条件不是me,则不要启动新视图
  • 正在启动新视图,然后发出警报
  • 我确信我的代码是错误的,但我不确定我应该如何实现这一点
  • 提前谢谢

    var body: some View {
        NavigationView {
            VStack {
                Button(action: {}) {
                    //NavigationLink(destination: secondView()) {
                        NavigationLink(destination: checkState()) {
                            Text("Add to Cart")
                        }.padding()
                         .font(.system(size: 14))
                         .background(Color.red)
                         .foregroundColor(.white)
                         .cornerRadius(6)
                    }
                }
            }.padding()
        } // End of the GetOrder Struct
    
        struct GetdOrderView_Previews: PreviewProvider {
            static var previews: some View {
                GetdOrderView()
            }
        }
    }
    
    struct checkState: View {
        @ObservedObject var calcCheck = MealOrder()
        @State var showingAlert = false
        @State var myToggle =  false
    
        var body: some View {
            NavigationView {
                VStack {
                    Button(action: {
                        //Enter Action here
                        if self.myToggle == true {
                            self.showingAlert = true
                        } else {
                            self.showingAlert = true
                        }
                    }) {
                        Text("This is a test")
                    }.padding()
                     .font(.system(size: 14))
                     .background(Color.blue)
                     .foregroundColor(.white)
                     .cornerRadius(6)
                     //Insert Alerts
                     .alert(isPresented: $showingAlert) {
                        if self.myToggle {
                            return Alert(title: Text("Showing Message"), message: Text("Cart is valid"), dismissButton: .default(Text("OK")))
                        } else {
                            return Alert(title: Text("Showing Alert"), message: Text("Cart Empty"), dismissButton: .default(Text("Cancel")))
                        }
                     }                 
                }
            }
        }
    }
    
    struct secondView: View {
        var body: some View {
            VStack {
                Text("This is the second test")
            }
        }
    }
    

    尝试以下方法

    @State var activateLink = false
    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(destination: checkState(), isActive: $activateLink) {
                    EmptyView()
                }
                Button(action: {
                    if _YOUR_CONDITION_HERE_ {
                        self.activateLink = true
                    }
                }) {
                    Text("Add to Cart")
                        .padding()
                        .font(.system(size: 14))
                        .background(Color.red)
                        .foregroundColor(.white)
                        .cornerRadius(6)
                }
            }
            .onAppear { self.activateLink = false }
        }.padding()
    }// End of the GetOrder Struct
    

    谢谢你。今晚我将实施并让您知道。小的格式化修复