Как перемещаться между представлениями с помощью кнопки в SwiftUI? - PullRequest
2 голосов
/ 19 марта 2020

Я нахожусь на странице входа в систему, и когда я нажимаю кнопку входа в систему, если вход в систему был выполнен без ошибок, я хочу перейти к новому представлению, если вход в систему не удался, я хочу остаться в том же представлении. Вот мой код:

struct LogIn: View {

    @State var mesaj = ""
    @State private var email = ""
    @State private var password = ""
    @EnvironmentObject var model: Model

    var body: some View {
        NavigationView {
            VStack {
                // EMAIL
                TextField("E-mail", text: $email).textFieldStyle(RoundedBorderTextFieldStyle())

                // PASSWORD
                TextField("Password", text: $password).textFieldStyle(RoundedBorderTextFieldStyle())

                // this is the login button
                Button(action: {
                    loginRequest(link: "https://someapi.com", email: self.email, password: self.password) // this is the login request
                    let seconds = 5.0
                    DispatchQueue.main.asyncAfter(deadline: .now() + seconds) {
                        self.mesaj = message
                        if message == "You are now logged in"
                        {
                            // here I want to navigate to a new view
                        }
                    }
                }) {
                    Text("LogIn")
                }
                Text(mesaj)
                Spacer()
            }
        }
    }
}

Спасибо!

1 Ответ

0 голосов
/ 19 марта 2020

Измените ваши представления так, чтобы

вместо прямого перехода к вашему представлению входа в систему, имели промежуточное представление с чем-то вроде этого:

struct PreLogIn: View {

@State var loggedInSuccess = false // that you pass into the LogIn() view
// or 
@EnvironmentObject var model: Model  // with a @Published var loggedInSuccess = false 

var body: some View {
     Group {
        if model.loggedInSuccess {
            YourNextView()
        }
        else {
            LogIn()
        }
    }
}
}

затем в вашем входе в систему () действие кнопки просмотра:

model.loggedInSuccess = true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...