在UINavigationController中支持纵向和横向视图的最佳实践

我search了高和低,我不知道我出来是处理这个问题的最好方法(虽然它似乎是唯一的一个)。

根据要使用多个笔尖为不同的iPhone界面方向,我实施了相关的方法,似乎一切工作正常。 不幸的是,我不得不处理一个UINavigationController,每个页面都必须支持纵向和横向模式,并在两种模式下重现相同的function。 这意味着,如果用户在某个时候决定从纵向切换到横向,整个应用程序应该允许他在所选的模式下来回浏览页面。

显然,缺less的文档是如何处理这个问题。 在我的看法中,我有一些附加的showChild方法来执行导航的button。 所有在纵向模式下都能正常工作(就我所知,这是默认模式)。 方法是这样的:

- (IBAction)showChild:(UITapGestureRecognizer *)sender { UIView *view = [sender view]; PortraitViewController *nextPortraitViewcontroller = [[PortraitViewController alloc] initWithNibName:@"Portrait" bundle:nil]; [self.navigationController pushViewController:nextPortraitViewcontroller animated:YES]; } 

但是,当涉及到景观模式,我得到了混合的结果。 在LandscapeViewController类中的showChild:方法是完全一样的,它从PortraitViewController开始build立一个视图,并将其推送到导航控制器。 这一切似乎都进展顺利,但是当我回到原来的位置时,显示的是前一个PortraitViewController,而不是风景,而且它的子视图都是分散的,而不是放在他们的位置。

现在的问题是:因为苹果公司似乎并不关心文档和最佳实践(这个机制是非常不理想的,我可以说这是来自人机交互devise和编程的背景),那么什么是correc – 苹果方式这样做?

我build立了一个示例项目来展示我如何“解决”我的问题。 这可能不是唯一的方法,也不是最好的方法,但是由于文档或缺乏,这是我想到的最好的。

https://github.com/Morpheu5/Rotation