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 при прокручивании таблицы.

Метки:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.