4

我有一个带有欢迎视图的入职流程,其中有两个按钮可以打开模式表以进行注册和登录。

注册完成后,该按钮应关闭注册模式视图并转换到另一个仪表板视图。

如何关闭模式,然后执行导航链接到仪表板视图?

import SwiftUI
import Firebase

struct Signup: View {    

@State private var isAuthCompleted: Bool = false
@State private var isShowingAlert = false
@State private var localMsg: String = ""

@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>

.
.
.


// signup button

        NavigationView {

            VStack {

                NavigationLink(destination: ContentView(),
                               isActive: self.$isAuthCompleted) {
                                Text("")
                }

                Button(action: {

                    Auth.auth().createUser(
                    withEmail: self.email,
                    password: self.password
                    ) {
                        authResult, error in
                        if let e = error {

                            print(e.localizedDescription)
                            self.localMsg = e.localizedDescription
                            self.isShowingAlert = true

                        } else {

                            self.presentationMode.wrappedValue.dismiss() // modal sheet dismiss                                
                            self.isAuthCompleted = true // navigationlink execution


                            }

                        }

                }) {

                    HStack {
                        Spacer()
                        Text("Sign Up")
                        .font(.headline)
                        .foregroundColor(.white)
                        Spacer()
                    }
                    .padding()
                    .background(Color.green)
                    .cornerRadius(20.0)

                }
                .alert(isPresented: $isShowingAlert) {
                    Alert(title: Text("Wait A Minute"), message: Text(self.localMsg), dismissButton: .default(Text("Got it!")))
                }

            }
            .navigationBarTitle("")
            .navigationBarHidden(true)

        }
4

1 回答 1

7

您可以使用该方法显示模式并在关闭时执行操作。它应该类似于:

import SwiftUI

struct Signup: View {

  // Property to keep track of your modal state
  @State var isPresented = false

  var body: some View {
    NavigationView {
      VStack {
        Button(action: {
           // Show / hide the modal view with toggle()
           self.isPresented.toggle()
        }, label: {
           // Your button label
        })
          .sheet(isPresented: $isPresented, 
                 onDismiss: {
                  // What happen when your modal dismiss
          }) {
            // Modal view that opens to be declared here
        }
      }
    }
  }
}
于 2019-11-13T14:34:00.937 回答