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

Mor*_*eu5 5 landscape portrait uitabbarcontroller uinavigationcontroller ios

我搜索高低,我不确定我出来的是处理这个问题的最佳方式(尽管它似乎是唯一的一个).

根据想要使用muliple笔尖来实现不同的iphone接口方向,我实现了相关的方法,一切似乎都运行良好.不幸的是,我必须处理UINavigationController,每个页面都必须支持纵向和横向模式,并在两种模式下重现相同的功能.这意味着如果用户在某个时刻决定从纵向切换到横向,整个应用程序应该允许他以他选择的模式在页面中来回导航.

显然,缺少的文档是如何处理这个问题.在我的视图中,我有许多带有附加showChild方法的按钮,用于执行导航.一切都适用于纵向模式(据我所知,这是默认模式).方法如下:

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

但是当谈到景观模式时,我会得到喜忧参半的结果.LandscapeViewController类中的showChild:方法完全相同,它构建一个从PortraitViewController开始的视图,并将其推送到导航控制器.这一切看起来都很顺利,但是当我向后导航时,我得到的是前面的PortraitViewController,而不是景观,而且它的子视图都散布在周围,而不是我放在它们的位置.

现在的问题是:因为Apple似乎并不真正关心文档和最佳实践(假设整个机制远非理想,我可以说这来自人机交互设计和编程的背景)是什么correc - Apple这样做的方式?

Mor*_*eu5 2

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

https://github.com/Morpheu5/Rotation