UINavigation控制器无法以横向模式打开

时间:2012-05-07 17:37:35

标签: iphone ios uiview uinavigationcontroller cocos2d-iphone

我按以下方式加载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){ }];
}

NewSignViewUIViewController,用于创建UITableView以获取用户的输入。当我使用UINavigationController加载它时,它拒绝在横向模式下打开。但是,如果我以下列方式将其直接加载到CCDirector,它会在横向上正确打开。

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

我在NewSignInView内使用以下内容:

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

因此有些事情阻止UINavigationController在横向模式下开放。任何人都可以帮助我试图找出导致问题的原因吗?

谢谢

1 个答案:

答案 0 :(得分:1)

在你的shouldAutorotateToInterfaceOrientation:方法:

中试试
return UIInterfaceOrientationIsLandscape(interfaceOrientation);

因此您的Controller支持两种旋转,而不仅仅是LandscapeRight。 确保带有logIn-Method的ViewController在shouldAutorotateToInterfaceOrientation中返回YES。

希望这会有所帮助。 除此之外,我还会提出一个建议:不要使用Controller命名你的ViewController NewSignInView以避免混淆。如果它只是一个快速而愚蠢的例子 - 没关系。

招呼