pushViewController на этот раз - PullRequest
0 голосов
/ 26 мая 2020

У меня есть один UIButton, который на экране приветствия называется Get Started, при нажатии на эту кнопку он переходит к PhoneNumberViewController, набирает и нажимает следующую кнопку. Для новых пользователей потребуется заполнить некоторую личную информацию в ProfileViewController перед переходом в HomeViewController. Теперь я изо всех сил пытаюсь открыть этот профиль хоть раз, так как мне не нужно, чтобы зарегистрированные пользователи проверяли свою информацию, когда они выходят из системы и повторно входят в систему позже.

Вот мой код:

    private func checkUser(userId: String) {
    userService.getUser(Uid: userId) { (tutor) in
        if let user = user,
            !user.name.isEmpty && !user.email.isEmpty {
            Router.route(to: .home)
        } else {
            let profileViewController = UIStoryboard.main.viewController(of: ProfileViewController.self)
            profileViewController.isFromOnboarding = true
            self.navigationController?.pushViewController(profileViewController, animated: true)
        }
    }
}

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Вы можете сохранить значение в userDefault

private func checkUser(userId: String) {
let isPresented =  UserDefaults.standard.bool(forKey: "isPresented")
    userService.getUser(Uid: userId) { (tutor) in
        if let user = user,
            !user.name.isEmpty && !user.email.isEmpty {
            Router.route(to: .home)
        } else if !isPresented {
            UserDefaults.standard.set(true, forKey: "isPresented")
            let profileViewController = UIStoryboard.main.viewController(of: ProfileViewController.self)
            profileViewController.isFromOnboarding = true
            self.navigationController?.pushViewController(profileViewController, animated: true)
        }
    }
}
0 голосов
/ 26 мая 2020

Создайте флаг hasPushedProfile в контроллере, который можно использовать, чтобы проверить, был ли уже показан вид профиля или нет. В первый раз флаг будет false, а затем будет установлен на true при отображении профиля, в следующий раз через профиль не будет отображаться, и вы можете вместо этого сделать что-то другое.

import UIKit

class LoginController: UIViewController {

    static var hasPushedProfile = false

    private func checkUser(userId: String) {
        userService.getUser(Uid: userId) { (tutor) in
            if let user = user,
                !user.name.isEmpty && !user.email.isEmpty {
                Router.route(to: .home)
            } else {
                if hasPushedProfile == false {
                    hasPushedProfile = true
                    let profileViewController = UIStoryboard.main.viewController(of: ProfileViewController.self)
                    profileViewController.isFromOnboarding = true
                    self.navigationController?.pushViewController(profileViewController, animated: true)
                } else {
                    // Already pushed profile, do something else...
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...