У меня есть приложение MVC с одной моделью и несколькими видами (что-то вроде скинов). Я хочу, чтобы пользователь мог переключать представления, и я не могу заставить его работать с ориентацией интерфейса. Самый простой подход выглядит следующим образом:Переключение между несколькими видами при уважении ориентации
- (void) switchToADifferentView: (UIView*) newView {
// self is a descendant of UIViewController
self.view = newView;
}
Это не работает, потому что входящий вид не повернется в соответствии с текущей ориентацией (до следующего изменения ориентации, test case). Есть ли способ заставить ориентацию взгляда? Похоже, что система действительно пытается сохранить элементы управления интерфейсом для себя. (Или это так же просто, как установить правильное преобразование вручную?)
Я решил, что лучше не переключать виды напрямую и вместо этого переключаться контроллерами. Это имеет смысл, поскольку упрощает первоначальный код. Но как переключить контроллеры, у которых нет «навигационного отношения» между ними? Думаю, я мог бы использовать presentModalViewController:
, но это похоже на взломать. То же самое касается навигационного контроллера. Если бы я поменять контроллеры вручную, я получаю неправильную ориентацию снова:
- (void) switchToAController: (id) incoming {
[currentController.view removeFromSuperview];
[window addSubview:incoming.view]; // does not respect current orientation
}
Теперь как щеколда я просто заменить существующий контроллер для другого? Опять же, контроллеры - это что-то вроде «скинов», работающих над общей моделью, поэтому нет смысла делать вид, что кожа A является «модальным» диалогом над кожей B или что они являются частью стека навигации.
Есть ли какие-либо ref-документы о необходимости преобразования ориентации вида вручную? –