【发布时间】:2013-01-05 15:59:35
【问题描述】:
我在做一件相当简单的事情时遇到了一些困难,我错过了一些东西但没有看到......
我用一个非常简单的应用程序(使用 IB)重现了这个问题:
- App 的主 ViewController 是 UINavigationController。
- NavigationController 的根是“FirstViewController”。
- FirstViewController 和 SecondViewController 是空的 UIViewController 子类。
- 它们的 XIB 文件在创建类时由 XCode 生成,已启用 AutoLayout。
- 我在 SecondViewController 的顶部和底部放置了标签(垂直空间限制 = 0)。
使用 ChildViewControllers
问题是如果我通过“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];
}
另外,SecondViewController 通过 NavigationController 显示一次后,就会一直显示良好。
我肯定错过了什么,但是什么? :p 你有什么想法吗?
我在 Dropbox 上上传了简单的项目:https://dl.dropbox.com/u/36803737/sharebox/AutoLayoutTest.zip
谢谢!
朱利安
【问题讨论】:
-
屏幕截图 FirstViewController:dl.dropbox.com/u/36803737/sharebox/AutoLayout/photo%202.PNG SecondViewController OK:dl.dropbox.com/u/36803737/sharebox/AutoLayout/photo%203.PNG SecondViewController NOK:dl.dropbox.com/u/36803737/sharebox/AutoLayout/photo%201.PNG
-
如果我手动指定视图的框架似乎没问题,但这对我来说不是一个解决方案:
self.secondVC.view.frame = self.view.frame;在子方法中。你怎么看?
标签: ios autolayout childviewcontroller