просматривать иерархию контроллера и изменения ориентации устройства - PullRequest
0 голосов
/ 18 марта 2011

Когда происходят изменения ориентации и контроллеры представления впоследствии уведомляются об изменениях, получает ли все корневое представление и все его подпредставления эти уведомления? Я создал корневое представление и подпредставление для этого корневого представления. Получает ли контроллер подпредставления (и любые контроллеры подпредставлений в этой иерархии) всю обработку вращения, возникающую в результате изменений ориентации устройства?

Я спрашиваю, потому что в этой иерархии находится представление UISplitViewController, и я подозреваю, что оно не получает уведомления об изменениях ориентации устройства. то есть, по сути, у меня есть что-то вроде A -> B -> C в моей иерархии представлений, где C - представление UISplitViewController.

1 Ответ

1 голос
/ 31 марта 2011

Когда происходят изменения ориентации, только первый вид окна будет вращаться вместе со всей его иерархией. С точки зрения viewControllers, viewController первого вида получит события изменения ориентации (и события viewWill / DidAppear), и все viewControllers порождаются им. Под порождением я имею в виду viewcontroller, отображаемый с использованием либо как вкладка uitabbarViewController, либо добавляемый в контроллер навигации, либо отображаемый модально. Другими словами, если где-то в вашей иерархии вы добавили представление viewcontroller вручную в окно или другое представление, этот viewcontroller не получит никаких событий.

См. Это: , почему viewDidAppear не запускается? то же самое происходит для изменения ориентации

Таким образом, есть 2 возможных причины:

  • представление вашего uisplitviewController или любого из его родительских элементов добавляется вручную в иерархию представления вместо нажатия на viewcontroller (представление поворачивается, но не получает события)
  • вы добавили представление как второй дочерний элемент окна (представление не поворачивается вообще)
...