SwiftUI Изменить вид с помощью кнопки - PullRequest
0 голосов
/ 27 июня 2019

Я понимаю, что есть PresentationButton и NavigationButton, чтобы изменить представления в последнем SwiftUI.Однако я хочу сделать простую операцию, как показано ниже.Когда пользователь нажимает на кнопку «Вход», если учетные данные верны, он их регистрирует, но также выполняет переход (в этом случае измените представление).Однако я не мог проверить, правильны ли они в PresentationButton, и я не мог изменить вид обычной кнопки.Есть ли другой способ сделать это?

  @IBAction func signInClicked(_ sender: Any) {

        if emailText.text != "" && passwordText.text != "" {

            Auth.auth().signIn(withEmail: emailText.text!, password: passwordText.text!) { (userdata, error) in
                if error != nil {
                   //error
                } else {

                   performSegue(withIdentifier: "toFeedActivity", sender: nil)


                }
            }

        } else {
            //error
        }




    }

1 Ответ

1 голос
/ 28 июня 2019

Вот один из способов.

struct AppContentView: View {

    @State var signInSuccess = false

    var body: some View {
        return Group {
            if signInSuccess {
                AppHome()
            }
            else {
                LoginFormView(signInSuccess: $signInSuccess)
            }
        }
    }
}

struct LoginFormView : View {

    @State private var userName: String = ""
    @State private var password: String = ""

    @State private var showError = false

    @Binding var signInSuccess: Bool

    var body: some View {
        VStack {
            HStack {
                Text("User name")
                TextField($userName, placeholder: Text("type here"))
            }.padding()

            HStack {
                Text(" Password")
                TextField($password, placeholder: Text("type here"))
                    .textContentType(.password)
            }.padding()

            Button(action: {
                // Your auth logic
                if(self.userName == self.password) {
                    self.signInSuccess = true
                }
                else {
                    self.showError = true
                }

            }) {
                Text("Sign in")
            }

            if showError {
                Text("Incorrect username/password").foregroundColor(Color.red)
            }
        }
    }
}

struct AppHome: View {

    var body: some View {
        VStack {
        Text("Hello freaky world!")
        Text("You are signed in.")
        }
    }
}

...