我在做一件相当简单的事情时遇到了一些困难,我错过了一些东西,但看不到......
我用一个非常简单的应用程序(使用 IB)重现了这个问题:
- App 的主 ViewController 是一个 UINavigationController。
- NavigationController 的根是“FirstViewController”。
- FirstViewController 和 SecondViewController 是空的 UIViewController 子类。
- 它们的 XIB 文件在创建类时由 XCode 生成,启用了 AutoLayout。
- 我将标签放在 SecondViewController 的顶部和底部(垂直空间约束 = 0)。
使用 ChildViewController
问题是如果我通过“ChildViewControllers”方法显示 SecondViewController,它在我的 iPhone4 上会出错:我看不到底部标签。
// In FirstViewController.m
- (IBAction)child:(id)sender {
[self addChildViewController:self.secondVC];
[self.view addSubview:self.secondVC.view];
[self.secondVC didMoveToParentViewController:self];
}
使用导航控制器
如果我通过 NavigationController 显示“SecondViewController”,一切正常,SecondViewController 显示正常。
// In FirstViewController.m
- (IBAction)push:(id)sender {
[self.navigationController pushViewController:self.secondVC animated:YES];
}
此外,一旦通过 NavigationController 显示 SecondViewController 一次,它就会一直很好地显示出来。
我肯定错过了什么,但是什么?:p 你有什么想法吗?
我在 dropbox 上上传了简单的项目:https ://dl.dropbox.com/u/36803737/sharebox/AutoLayoutTest.zip
谢谢!
朱利安