[Вопрос обновлен]
Так вот в чем проблема, я наконец сузил ее до этого. Если вы создаете новый UIViewController во всех методах
- (id)init;
- (void)loadView;
- (void)viewDidAppear:(BOOL)animated;
- (void)viewDidLoad;
(...)
Стандартным интерфейсомOrientation является Portrait, и если обнаружен альбомный режим, он быстро повернется к этой ориентации. Который затем может быть обнаружен с помощью:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation;
Проблема в том, что на iPad довольно сложно подготовить интерфейс для текущей ориентации интерфейса в пределах loadView (или одного из других), поскольку он будет возвращать только Portrait. Это приведет к нескольким проблемам:
1) Я хочу, чтобы мой контент перезагружался в режиме портрета, но НЕ в альбомном режиме. Обычно я бы поместил оператор if в loadView. Если в портретном режиме, перезагрузите контент. Но в этом случае он всегда возвращает портрет и, следовательно, всегда загружает контент.
2) Я хочу использовать метод presentPopoverFromRect: inView: enabledArrowDirections: animated: - в режиме портрета, чтобы автоматически отображать всплывающее меню при запуске приложения. Это приведет к сбою приложения при запуске в портретном режиме. Причина: «Поповерс не может быть представлен из вида, у которого нет окна».
Единственное безопасное предположение находится внутри 'didRotateFromInterfaceOrientation: (UIInterfaceOrientation) fromInterfaceOrientation', но этот метод не будет запущен, если он запускается в портретном режиме.
// ----
Обновление (15,37)
'UIApplicationWillChangeStatusBarOrientationNotification'
Будет опубликовано, только когда пользователь переключается с портретного на альбомное (или наоборот). Если проблема была в интерфейсе, то это можно легко решить с помощью наблюдения за этим уведомлением и
if (UIDeviceOrientationIsPortrait(interfaceOrientation)) {
// layout subviews for portrait mode
} else {
// layout subviews for landscape mode
}
Но проблема в том, что я хочу знать, в каком режиме он находится при запуске, чтобы определить, стоит ли мне перезагружать контент, я не могу перезагрузить контент, и когда он меняется на альбомную, отмените его.