В каждом контроллере, который содержит множественную MVC, есть свойство, которое содержит массив контроллеров, которые в нем присутствуют
1 2 3 4 5 6 7 8 |
// // proSwift.ru // var viewControllers: [UIViewController] {get set} let navController = UINavigationController() var arrayOfControllers = [UIViewController]() arrayOfControllers = navController.viewControllers |
Каждый контроллер знает находится ли он внутри другого контроллера, который содержит множественную MVC
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// // 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, например:
1 2 |
let svc = UISplitViewController() let detailVC = svc.viewControllers[1] |
Пример использования свойств для обращения к корневому UINavigationController есть в статье Скрываем UINavigationBar при прокручивании таблицы.
Добавить комментарий