UITabbar вопрос ориентации - PullRequest
1 голос
/ 23 ноября 2010

У меня есть tabBarController, который содержит две вкладки, я хотел бы, чтобы 1 вкладка была ориентирована на поддержку, а другая нет, как это сделать?я пробовал код:

@ реализация UITabBarController (CustomTabbar)

  • (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation {

     if(self.tabBarController.selectedIndex==1){
    
    
    <pre><code>    NSLog(@"rotate");
        return YES;
    

    } else {

    NSLog(@"no rotate");
    return  NO;
    

    }

} @ end

, но после поворота view2 в ландшафтный режим и обратнодля view1, view1 также становится пейзажем, пока я не поверну его обратно в портрет, но мне нужно, чтобы view1 всегда оставался портретным, когда он появляется, может помочь?

С уважением,

sathish

Ответы [ 2 ]

0 голосов
/ 18 марта 2011

При использовании контроллера UITabBar все сообщения об ориентации переходят на панель вкладок и на этом останавливаются.

Итак, чтобы выполнить то, что вы пытаетесь сделать, вы должны создать новый класс, унаследованный от UITabBarController, и использовать его вместо этого.

@interface CustomUITabBarController : UITabBarController

После этого у вас есть 2 варианта управления ориентацией ваших контроллеров, и у вас обоих будет выбор shouldAutorotateToInterfaceOrientation селектор.

Вы можете использовать текущий выбранный индекс панели вкладок для возврата ДА или НЕТ для ориентации

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{

    if(self.selectedIndex == 0) {
        return NO;
    } else {
        return YES;
    }

}

ИЛИ вы можете позволить контролеру решать за себя (как вы пытались сделать раньше)

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{

    if (self.selectedViewController) {
        return [self.selectedViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
    } else {
        return YES;
    }
}
0 голосов
/ 24 ноября 2010

На контроллере представления, который вы не хотите вращать , убедитесь, что на:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

Вы возвращаете NO;

Вы возвращаете его дляконтроллер tabBar, а не фактический viewController.

...