Проблема ориентации UITabbar

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

@implementation UITabBarController (CustomTabbar)

  • (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation {

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

    } еще {

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

    }

} @конец

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

С уважением,

сатистичный


person sathish kumar    schedule 23.11.2010    source источник


Ответы (2)


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

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

Вы вернете НЕТ;

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

person Zebs    schedule 24.11.2010

При использовании контроллера 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;
    }
}
person Felipe Sabino    schedule 18.03.2011