Проблема с ориентацией интерфейса панели вкладок

Я добавил настраиваемую панель вкладок. С вкладками, включая дополнительные вкладки.

Вкладка «Моя первая» поддерживает только портретный режим. Вторая вкладка имеет все ориентации.

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

Как я могу преодолеть этот сценарий? Это метод поворота в настраиваемом контроллере панели вкладок.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if (self.selectedIndex == 0) {

    return [self.selectedViewController shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationPortrait];

} else if (self.selectedIndex == 1) {

    return YES;
} 

return NO;}

Это метод поворота в контроллерах первого и второго представления контроллера навигации.

Первый

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait);}

Второй

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;}

person xydev    schedule 02.05.2011    source источник
comment
Панель вкладок, которая остается в альбомной ориентации, является настраиваемой? Как вы добавили на экран?   -  person Alex Terente    schedule 02.05.2011
comment
@Terente Ionut Alexandru navigationController_ = [[UINavigationController alloc] initWithRootViewController: tabBarController_]; [self.window addSubview: navigationController_.view];   -  person xydev    schedule 03.05.2011


Ответы (1)


В случае автоматического поворота в соответствии с ориентацией интерфейса вам необходимо перерисовать tabBar, просто удалите его из self.window и снова добавьте.

[navigationController_.view removeFromSuperview];
[self.window addSubview:navigationController_.view];

Изменить: перед перерисовкой необходимо установить правильную рамку для каждой ориентации.

person Alex Terente    schedule 03.05.2011