我通过以下方式加载UIViewController

-(void)logIn
{
    NewSignInView *viewController = [[[NewSignInView alloc] init] autorelease];

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
    [self presentModalViewController:navController animated:YES];
    [navController release];

    [UIView animateWithDuration:0.3
                          delay:0
                        options:UIViewAnimationCurveEaseOut
                     animations:^{ self.view.alpha = 0; }
                     completion:^(BOOL finished){ }];
}


NewSignView是一个UIViewController,它创建一个UITableView来获取用户的输入。当我使用UINavigationController加载它时,它拒绝以横向模式打开。但是,如果我通过以下方式将其直接加载到CCDirector,则它可以在横向模式中正确打开。

[[[CCDirector sharedDirector] openGLView] addSubview:viewController.view];


我在NewSignInView中使用以下内容:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}


因此,有些事情阻止了UINavigationController在横向模式下打开。谁能以任何方式帮助我找出导致问题的原因吗?

谢谢

最佳答案

尝试在您的shouldAutorotateToInterfaceOrientation:方法中执行以下操作:

return UIInterfaceOrientationIsLandscape(interfaceOrientation);


因此,控制器不仅支持LandscapeRight,还支持两种旋转。
确保带有logIn-Method的ViewController在shouldAutorotateToInterfaceOrientation中返回YES。

希望这可以帮助。
此外,我会提出一个建议:不要用没有Controller的名称命名ViewController NewSignInView以避免混淆。如果这只是一个快速而痛苦的例子-没关系。

打招呼

关于iphone - UINavigation Controller 无法在横向模式下打开,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10486497/

10-08 21:30