UITabBarController, UISplitViewController, UINavigationController и multiple MVC
В каждом контроллере, который содержит множественную MVC, есть свойство, которое содержит массив контроллеров, которые в нем присутствуют
// // proSwift.ru // var viewControllers: [UIViewController] {get set} let navController = UINavigationController() var arrayOfControllers = [UIViewController]() arrayOfControllers = navController.viewControllers
Каждый контроллер знает находится ли он внутри другого контроллера, который содержит множественную MVC
// // proSwift.ru // var tabBarController: UITabBarController? { get } var splitViewController: UISplitViewController? { get } var navigationController: UINavigationController? { get } let someViewController = UIViewController() let tbc = someViewController.tabBarController let svc = someViewController.splitViewController let nc = someViewController.navigationController
Три последних свойства — опциональны. Не nil свойство, соответствующее контроллеру, который содержит текущий контроллер.
Через эти свойства мы можем получить доступ к любому контроллеру внутри множественной структуры MVC, например:
let svc = UISplitViewController() let detailVC = svc.viewControllers[1]
Пример использования свойств для обращения к корневому UINavigationController есть в статье Скрываем UINavigationBar при прокручивании таблицы.
Добавить комментарий