Как перемещаться между Контроллерами в Swift
пишу на Swift шестой день, поэтому не знаю насколько вопрос актуален для общественности, но для меня - да.
Приложение под IOS создаю через storyboard, поэтому все переходы у меня осуществляются посредством зажатый ctrl+перетягивание открытия на нужный view. В приложении есть четыре "ветви":
- Авторизация+Аутентификация ( Начинается с NavigationController )
- Личный кабинет пользователя ( Начинается с TabBarController )
- Личный кабинет Администратора ( Начинается с TabBarController )
- Личный кабинет Сотрудника ( Начинается с TabBarController )
StoryBoard Entry Point у меня стоит на первой ветви.
Вопрос: как перенаправлять не с помощью storyboard, а через программный код? Я искал в интернете, но везде код обычно занимает больше 10 строк, я в это не верю... И везде перенаправление идет с помощью ViewController, но мне же надо перенаправлять на NavigationController или TabBarController в зависимости от того - авторизирован ли пользователь. Пожалуйста, объясните максимально доходчиво ( как 3-х летнему ребенку ), как это сделать?
Ответы (1 шт):
Вот через Навигэйшн контроллер:
if let newViewController = self.storyboard?.instantiateViewController(withIdentifier: "NewViewController") as? NewViewController {
self.navigationController?.pushViewController(newViewController, animated: true)
}
Вот просто открытие нового контроллера:
if let newViewController = storyboard?.instantiateViewController(withIdentifier: "NewViewController") as? NewViewController {
newViewController.modalTransitionStyle = .crossDissolve // это значение можно менять для разных видов анимации появления
newViewController.modalPresentationStyle = .overCurrentContext // убрав или закомментировав эту строку, вы получите появление смахиваемого контроллера
present(newViewController, animated: true, completion: nil)
}
Через ТабБар, кодом не подскажу, так как сам не делал, но уверен, что ищется в пять секунд.
P.S. Еще, извиняюсь, для всего этого, нужно указать в сториборде идентификатор контроллера (то, что у меня в коде выше "NewViewController")
Вот тут:
