Порядок входа в раскадровку Swift - PullRequest
0 голосов
/ 17 октября 2019

Я относительно новичок в Swift, и у меня нет большого опыта работы с событиями и функциями. После небольшого исследования я начал работать над экраном входа в существующее приложение, в котором его раньше не было. Вот что я решил сделать.

Мой поток идет в следующем порядке:

  1. Экран входа в систему
  2. После успешного входа в систему я сохраняю информацию о сеансе
  3. После экрана входа в систему я показываюглавный экран с использованием сегмента

Если я закрою и снова открою приложение, мой экран входа в систему по-прежнему будет стартовым экраном, но внутри viewDidAppear у меня есть проверка сеанса, и если сеанс существует, я выполняю переходчтобы показать основной контроллер.

Я видел, что пользователи делают это наоборот - сначала показывают главный экран и, если сеанс входа не происходит, они закрывают его экраном входа или в основном сначала показывают экран входа. .

В моем способе сделать это мне не нравится то, что всегда появляется экран входа в систему, хотя, если честно, он выполняет работу для этого приложения в частности.

Есть ли способ сделать это без появления экрана входа в систему во время сеанса? Как это идеально сделать с точки зрения порядка: сначала экран входа в систему или второй экран входа в систему? А также, что лучше использовать, достаточно контроллера навигации для изменений или переходов?

1 Ответ

0 голосов
/ 17 октября 2019

многие здесь говорят, что делать это не рекомендуется, но я буду использовать appDelegate для этого в didFinishLaunchingWithOptions

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        if requestManager.instance.token != nil {       
           if requestManager.instance.user.birthDate != nil && requestManager.instance.user.iscomplete() {
                print("GOING TO TABBARVC")
                let storyboard = UIStoryboard(name: "Main", bundle: nil)
                let initialViewController = storyboard.instantiateViewController(withIdentifier: "TabBarVC")
                self.window?.rootViewController = initialViewController
                self.window?.makeKeyAndVisible()
            }else if requestManager.instance.user.birthDate != nil && !requestManager.instance.user.iscomplete(){
                print("GOING TO DATANC")
                let storyboard = UIStoryboard(name: "Main", bundle: nil)
                let initialViewController = storyboard.instantiateViewController(withIdentifier: "TabBarVC")
                self.window?.rootViewController = initialViewController
                self.window?.makeKeyAndVisible()
            }else{
                print("GOING TO REGISTER")
                let storyboard = UIStoryboard(name: "Main", bundle: nil)
                let initialViewController = storyboard.instantiateViewController(withIdentifier: "register")
                //loginRequest.instance.delegate = initialViewController as profileViewController
                self.window?.rootViewController = initialViewController
                self.window?.makeKeyAndVisible()
            }
        }

, поэтому я проверяю токен, сохраненный в userdefault. можно проверить с помощью keycahin, если это критично, и при углублении на обнаруженном может отображаться тот или иной экран, последний случай - это случай, когда никакие данные вообще не собираются регистрироваться или экран входа в систему. так что вы можете проверить сеанс, если есть окно сеанса amke, показать основной экран без сеанса, перейти к экрану входа

, как это показано в коде:

    if sesion != nil {
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let initialViewController = storyboard.instantiateViewController(withIdentifier: "MainVC")
        self.window?.rootViewController = initialViewController
        self.window?.makeKeyAndVisible()
     }else{
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let initialViewController = storyboard.instantiateViewController(withIdentifier: "loginVC")
        self.window?.rootViewController = initialViewController
        self.window?.makeKeyAndVisible()
}

, где MainVC - это идентификатор вstoryBoard для mainViewcontroller и loginVC - это раскадровка Idetntifier для loginViewController.

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