2010-08-23 1 views
0

У меня есть большое приложение, на котором я работаю, у которого есть основной вид, называйте его корневым представлением, с панелью инструментов наверху для управления программой. Существует ряд дополнительных представлений, которые накладывают «корневое» представление, но оставляют видимую панель инструментов. Существует меню popover, которое контролирует, какой суб-просмотр отображается над «корневым» представлением. Обратите внимание: я не использую контроллер splitview.Автоматический поворот ipad sub views

Для сохранения ресурсов я инициализирую различные подвыборы, когда их функция выбрана из меню в первый раз. Все подматрицы были разработаны в IB. Когда ipad находится в портретном режиме, когда подменю сначала выбирают, все автоматическое вращение работает очень хорошо, однако, когда ipad находится в альбомной ориентации, когда приложение запускается первым, а подпрограммы сначала запускаются, они не поворачиваются и не отображаются в режим обрезанного портрета. Они, похоже, не знают, что iPad повернут.

Если я инициализирую все подпункты из метода «root» viewDidLoad, они все вращаются должным образом независимо от того, какая ориентация ipad при запуске. Поэтому, если я инициализирую subviews перед представлением «root», то все хорошо. Если я инициализировал их после появления «корневого» представления, подпрограммы не будут автоматически вращаться.

Поскольку существует много кода, я надеюсь, что я объяснил это достаточно ясно, чтобы кто-то с большим опытом или пониманием мог поставить меня на правильный путь.

Благодаря Джим

ответ

2

Джим, При добавлении подвидов к главной UIWindow, изменение в порядке, в котором вы добавляете их может повлиять на эти взгляды зависят от начальной ориентации устройства. Например, в App с контроллером навигации (созданный в коде) и контроллером представления (созданном в IB), следующий код будет отображаться правильно, независимо от начальной ориентации:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
     UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; 

     [self.window addSubview:navigationController.view]; 
     [self.window addSubview:viewController.view]; 
     [self.window makeKeyAndVisible]; 

     return YES; 
} 

Однако, следующий фрагмент код будет перепутались, когда приложение запускается в альбомном режиме (обратите внимание на порядок addSubview вызывает в окне):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; 

     [self.window addSubview:viewController.view]; 
     [self.window addSubview:navigationController.view]; 
     [self.window makeKeyAndVisible]; 

     return YES; 
} 

Я бы попытаться изменить порядок, в котором вы добавляете подвидов. Надеюсь это поможет!