UISplitViewController - willShowViewController не запускается - PullRequest
0 голосов
/ 27 августа 2011

Я конвертирую приложение для iPhone для работы на iPad.В этом случае пользовательский интерфейс был создан с помощью конструктора интерфейсов.Интерфейс корневого контроллера (с индексом 0) состоит из контроллера вкладок и контроллеров навигации в этом макете:

  • контроллер вкладок
  • контроллер навигации 1
  • Контроллер навигации 2
  • Контроллер навигации 3

Я реализовывал это по частям.Когда я настраиваю Tab Controller и Navigation Controller 1 в качестве первого шага, все работает правильно.willHideViewController & willShowViewController работают правильно.Мой интерфейс правильно переключается с SplitView на Popover.Когда я добавляю Navigation Controller 2, willHideViewController и willShowViewController никогда не срабатывают, и я всегда вижу контроллер Popover, независимо от ориентации iPad в симуляторе.

Когда я добавляю второй контроллер навигации, мне нужно что-то ещесвязать внутри конструктора интерфейса, чтобы интерфейс работал правильно?

Ответы [ 2 ]

0 голосов
/ 16 октября 2011

Ответ на этот вопрос довольно прост: когда вы реализуете контроллер разделенного вида и хотите, чтобы все правильно переключалось с портретного на ландшафтное, вам нужно убедиться, что все элементы интерфейса реализуют shouldAutorotateToInterfaceOrientation для портрета и ландшафтные макеты.

0 голосов
/ 27 августа 2011

Я предполагаю, что вы установили делегата для первого контроллера навигации, но не один для второго.Объект делегата получит такие методы, как willHideViewController.

Я также не уверен, что наличие нескольких контроллеров навигации - это хороший стиль.Контроллер представления знает, что он был помещен в контроллер навигации, и вы можете получить к нему доступ с помощью self.navigationController.Вы должны продолжать нажимать контроллеры представления на одном контроллере навигации.Или, возможно, я неправильно понял, что вы пытаетесь сделать с вашим контроллером вкладок.

...