Краткая версия:
Я выделяю / инициализирую / сохраняю новый UIViewController в одном методе UIViewControllers viewDidLoad, добавляя новое представление в self.view. Обычно это работает, но, похоже, это мешает обработке изменения ориентации моего приложения для iPad.
Более длинная версия:
Я создаю довольно сложное приложение для iPad, включающее множество представлений и контроллеров представлений. Столкнувшись с некоторыми трудностями при адаптации к ориентации устройства, я сделал простой проект XCode, чтобы выяснить, в чем проблема.
Во-первых, я прочитал Apple Docs по этой теме (небольшой документ под названием «Почему мой UIViewController не вращается вместе с устройством?»), и хотя я действительно считаю, что это как-то связано с одной из перечисленных здесь причин, я не совсем уверен, как это исправить.
В моем тестовом проекте у меня есть appDelegate, rootViewController и UISplitViewController с двумя настраиваемыми viewController. Я использую кнопку на rootViewController, чтобы переключиться на splitViewController, а оттуда я могу использовать кнопку, чтобы переключиться обратно на rootViewController. Пока все отлично, т.е. все виды подстраиваются под ориентацию устройства.
Однако в правом viewController splitViewController я использую метод viewDidLoad для инициализации некоторых других viewController и добавления их представлений в собственное представление:
self.newViewController = [[новый UIViewController] автозапуск]; [newViewController.view setBackgroundColor: [UIColor yellowColor]]; [self.view addSubview: newViewController.view];
Здесь все идет не так. Почему-то после добавления этого вида настройка ориентации устройства становится беспорядочной. При запуске все в порядке, после того, как я переключаюсь на splitViewController, все по-прежнему в порядке, но как только я переключаюсь обратно на rootViewController, все кончено. Я пробовал (почти) все, что касается сохранения и освобождения контроллера просмотра, но, похоже, ничего не исправляет.
Как видно из приведенного выше кода, я объявил newViewController как свойство, но то же самое происходит, если я этого не сделаю.
Разве я не должен вообще добавлять представление ViewController к моему собственному представлению? Это действительно испортит мой проект, так как у меня много viewController'ов, выполняющих самые разные вещи.
Любая помощь по этому вопросу будет принята с благодарностью...