goldbest
@goldbest
Full Stack Web Developer

Как правильно сделать всплывающее окно авторизации, при переходе на uitabbaritem «Личный кабинет»?

Всем привет!
Подскажите, пожалуйста, как правильно реализовать открытие окна авторизации?
Делаю приложение как у Авито, там есть "Мой кабинет" табом, вот когда я на него нажимаю, если чувак не авторизован нужно показать вьюшку с логином (там же есть переход на регу)
Сейчас у меня сделано так:
В контролере "мой кабинет"
override func viewDidAppear(animated: Bool) {
        if (authorization == 0) {
            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                self.performSegueWithIdentifier("Login", sender:self)
            })
        }
    }


А в контролере "Логин", кнопка отмена, которая закрывает логин:
override func viewDidAppear(animated: Bool) {
@IBAction func CloseLogin(sender: UIBarButtonItem) {
        self.navigationController?.dismissViewControllerAnimated(true, completion: nil)
        self.navigationController?.tabBarController?.selectedIndex = 0
    }

После закрытия я хочу перейти на первый таб, но self.navigationController?.tabBarController?.selectedIndex = 0 не срабатывает :(
Вот может скрин поможет понять: https://yadi.sk/i/z0seo7oCnwVTj
Кто, что подскажет?
  • Вопрос задан
  • 351 просмотр
Пригласить эксперта
Ответы на вопрос 1
@rsi
software engineer
Во первых не ясно зачем реализовывать личный кабинет табом. Во вторых из скина не видно то он таб. В третьих не совсем понятно что вы хотите сделать.

1) Вы пробовали дебагером пошагам проходить по коду? Если нет сделайте это, сразу поймете что там происходит. Если да то что там происходит не понятного?

2) очевидный косяк в том что у вас там такая структура

tabBarController->личный кабинет
navigationController->авторизация

И грубо говоря, авторизация принадлежит navigationController и выражение self.navigationController? корректно на экране авторизации.
Но tabBarController он сам по себе, он никак не связан с экраном авторизации и его navigationController, по этому выражение self.navigationController?.tabBarController? не корректно. Вам нужно делать как то так личный кабинет?.tabBarController?.selectedIndex = 0 для того что бы находясь в одном контроллере дернуть что то в другом вам нужно воспользоваться делегатами.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы