我搜索了高低,我不确定我得出的结果是处理这个问题的最佳方法(尽管它似乎是唯一的方法)。
根据Want to use muliple nibs for different iphone interface orientation,我实现了相关方法,一切似乎都很好。不幸的是,我必须处理 UINavigationController,并且每个页面都必须支持纵向和横向模式,并在两种模式下重现相同的功能。这意味着如果用户在某个时候决定从纵向切换到横向,整个应用程序应该允许他以他选择的模式来回浏览页面。
显然,缺少的一点文档是如何处理这个问题。在我看来,我有许多带有附加 showChild 方法的按钮来执行导航。一切都在纵向模式下运行良好(据我所知,这是默认模式)。方法是这样的:
- (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 开始构建一个视图并将其推送到导航控制器。一切似乎都很顺利,但是当我返回时,我看到了以前的 PortraitViewController,而不是风景,而且它的子视图都散布在各处,而不是我放置它们的地方。
现在的问题是:由于 Apple 似乎并不真正关心文档和最佳实践(afaik 这整个机制远非理想,我可以说这是来自人机交互设计和编程的背景)什么是正确——苹果这样做的方式?