Как я могу вернуться к представлению входа в систему в приложении SwiftUI - PullRequest
1 голос
/ 22 февраля 2020

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

struct ContentView: View {

    @State private var showLogin = true
    @State private var loginPassword = ""

    let correctPassword = "1234"

    var body: some View {
        Group{
            if showLogin{
                VStack{
                    TextField("Your password", text: self.$loginPassword)

                    Divider()
                    Button("Login"){
                        if self.loginPassword == self.correctPassword {
                            self.showLogin.toggle()
                        }else {
                            self.loginPassword = ""
                        }
                    }
                    .padding(8)

                    .background(Color.green)
                    .foregroundColor(.white)
                    .cornerRadius(20)
                }
            } else {
                Text("Hello world")
            }

        }
    }
}

1 Ответ

2 голосов
/ 22 февраля 2020

Здесь возможен подход (на основе уведомлений приложения):

struct ContentView: View {
    @State private var showLogin = true
    @State private var loginPassword = ""

    let correctPassword = "1234"

    let deactivatePublisher = NotificationCenter.default.publisher(for: 
            UIApplication.didEnterBackgroundNotification)

    var body: some View {
        Group{
            if showLogin{
                VStack{
                    TextField("Your password", text: self.$loginPassword)

                    Divider()
                    Button("Login"){
                        if self.loginPassword == self.correctPassword {
                            self.showLogin.toggle()
                        }else {
                            self.loginPassword = ""
                        }
                    }
                    .padding(8)

                    .background(Color.green)
                    .foregroundColor(.white)
                    .cornerRadius(20)
                }
            } else {
                Text("Hello world")
            }
        }
        .onReceive(deactivatePublisher) { _ in
            self.loginPassword = ""
            self.showLogin = true
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...