Первый блок – авторизация. Второй блок – таббар с контентом в табах. Сейчас настал момент их связать логикой. До этого я переключался между комплектами путем установки Initial View Controller, вручную.
Мне нужно после успешной авторизации переключаться на таббар, без возможности вернуться на блок авторизации кнопкой назад из навбара. А также, нужно в одном из экранов таббара по кнопке (логаут) возвращаться на блок авторизации.
Я начал с логаута, через код:
self.view.window?.rootViewController = loginVC
self.view.window?.makeKeyAndVisible()
В таком случае, как я понял, навконтроллер из блока авторизации не задействован и я даже не могу перейти на второй экран блока по кнопке. Просто вызвать push из текущего навконтроллера тоже нельзя, потому что остается стек с кнопкой назад и кнопки навигации таббара.
Как правильно выстроить навигацию для моей задачи?
1. Растащи на несколько сторибордов 2. Посмотри что такое инициализация с ксиба 3. Переключай рут по необходимости. Либо флоу авторизации, либо основной
По поводу рута – я смог попасть с блока таббара на блок логина с помощью кода: let nav = LoginNavigationController(rootViewController: loginVC) self.view.window?.rootViewController = nav Указал навконтроллеру из блока логина кастомный навконтроллер и указал этот навконтроллер как рут вью контроллер. Теперь надо вернуться на таббар после успешной авторизации. Если посмотреть на скриншот сториборда, то он в иерархии идет первым, а потом под ним только навконтроллеры. Я сначала попробовал таббар выбрать в качестве рут вью контроллера, но он не является вью контроллером. Тогда как мне перейти на него?
Ты можешь инициализировать по идентификатору. У каждого контроллера в сториборде есть идентификатор. И через него можно инициализировать контроллеры.
Магия, конечно, но сработало. Спасибо)
Обсуждают сегодня