0

Я разрабатываю приложение, которое имеет несколько представлений и контроллер корневого представления. Он основан на использовании UINavigationController pushViewController: В didFinishLaunchingWithOptions:iOS6 Ориентация с NavigationController

BIDLoginController *loginController = [[BIDLoginController alloc] initWithNibName:@"Login" bundle:nil]; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:loginController]; 
[self.window setRootViewController:self.navController]; 

В LoginController:

BIDMainPageController *mainPageController = [[BIDMainPageController alloc] initWithNibName:@"MainPage" bundle:nil]; 
[self.navigationController pushViewController:mainPageController animated:YES]; 

но контроллеры вид являются подклассами UIViewController, не UINavigationController. Теперь я хочу, чтобы некоторые взгляды поддерживали ориентацию (портрет и пейзаж), а некоторые из них поддерживали только портрет. Я пробовал следующее:

- (BOOL)shouldAutorotate 
{ 
    return NO; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

Это не работает. shouldAutorotate: метод никогда не вызывался. Я также попробовал UINavigationControllerDelegate без результата. Когда я меняю суперкласс класса view с UIViewController на UINavigationController, представление не отображается, отображается только панель навигации. Может кто-нибудь помочь с этим?

+0

Возможный дубликат [Unsupport Orientation in iOS6] (http://stackoverflow.com/questions/16469651/unsupport-orientation-in-ios6) – matt

ответ

0

Вы не можете выполнять то, что вы описываете. iOS 6 не поддерживает , форсируя различные контроллеры дочерних элементов UINavigationController для вращения. Они могут ответить по-разному на вращение устройства, но они не могут быть принудительно повернуть.