如何在subViewController方向中保存NavigationController?

时间:2011-11-18 13:40:13

标签: iphone uinavigationcontroller orientation

我制作了一个NavigationController结构。 FirstViewController是RootViewController,SecondViewController是下一个SubViewController。每个ViewController应该是AutorotateToInterfaceOrientation是不同的(参考下面的代码)。 FirstViewController只有纵向可用。 SecondViewController全部支持Portrait和landscapeMode。

在触摸按钮后的FirstViewController中,调用pushHandler。接下来的SecondViewController是一个推送。 在将Landscape转换回FirstViewController之后的SecondViewController中,该方向太过横向。

但是,我实现了每个ViewController方向不同。但是每个ViewController都没有独立设置方向。为什么会这样?

我怎样才能查看控制器的每个方向可以独立设置,做什么?

如果SecondViewController更改landscapeMode的方向。我想回到FirstViewController仍然portraitMode(永远持有portraitState任何不受影响的东西)。 我如何以编程方式实现?

FirstViewController *rootViewController = [FirstViewController alloc] init];

UINavigationController *MyNavigationController = [UINavigationController alloc] initWithRootViewController:rootViewController]];

// FirstViewController

- (void)pushHandler
{
    SecondViewController *subViewController = [SecondViewController alloc] init];

    [[self navigationController] pushViewController:subViewController animated:YES];
    [subViewController release];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{    
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

// SecondViewController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{    
    return YES;
}

1 个答案:

答案 0 :(得分:0)

因为您为UINavigationController所有UIViewControllers UINavigationController使用了children,因此您为UINavigationController设置的任何定位行为都将应用于其UIViewControllers或其他所有对象叠加。

将{{1}}视为房屋,将{{1}}视为房间。房子里的所有房间都会像房子一样旋转。没有转动房子和其他房间就无法转动房间。

但一如既往有诡计。看看我对这个问题的回答Only having one view autorotate in xcode?