我制作了一个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;
}
答案 0 :(得分:0)
因为您为UINavigationController
所有UIViewControllers
UINavigationController
使用了children
,因此您为UINavigationController
设置的任何定位行为都将应用于其UIViewControllers
或其他所有对象叠加。
将{{1}}视为房屋,将{{1}}视为房间。房子里的所有房间都会像房子一样旋转。没有转动房子和其他房间就无法转动房间。
但一如既往有诡计。看看我对这个问题的回答Only having one view autorotate in xcode?