我有两个子视图控制器,据我所知是相同的,但其中一个意外行事。相同的视图控制器显示不同
两个子视图控制器被称为MenuLoggedInViewController
和MenuLoggedOutViewController
。其容器视图控制器具有下面的代码:
override func viewDidLoad() {
super.viewDidLoad()
// i comment out one of these two lines to produce the different results:
self.masterView = MenuLoggedOutViewController(nibName: "MenuLoggedOutViewController", bundle: nil)
// self.masterView = MenuLoggedInViewController(nibName: "MenuLoggedInViewController", bundle: nil)
self.detailView = RootViewController(nibName: "RootViewController", bundle: nil)
self.masterViewFrame = CGRectMake(0, 0, self.view.frame.width, 50)
self.detailViewFrame = CGRectMake(0, 50, self.view.frame.width, self.view.frame.height - 50)
self.addChildViewController(masterView!)
self.addChildViewController(detailView!)
self.view.addSubview(masterView!.view)
self.view.addSubview(detailView!.view)
masterView!.view.frame = masterViewFrame
// masterView!.view.bounds = masterViewFrame // - i tried this and it made no difference
detailView!.view.frame = detailViewFrame
}
的MenuLoggedInViewController
和MenuLoggedOutViewController
在其迅速的文件几乎相同的模板代码:
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
我还没有触及.xib
文件除了改变背景颜色。在经过.xib
文件的设置后,他们似乎都是相同的。如果我能帮忙,我不会走近故事板,所以我不太熟悉它。但我花了很长时间仔细检查两个.xib
文件的所有值,并且它们之间没有区别,我可以检测到除背景颜色以外的其他值。
正如你所看到的,黑色MenuLoggedInViewController
紧密地贴靠在下面的白色视图控制器。这是打算。
灰色背景是含有视图控制器的颜色。正如你所看到的黑色MenuLoggedOutViewController
只能走得这么远。
任何人都可以向我解释,尽管几乎相同,并调用几乎相同的代码,为什么MenuLoggedOutViewController
无法正确显示?
应该注意的是,如果屏幕旋转到侧面然后再返回到肖像,则MenuLoggedOutViewController
会自行纠正。然后MenuLoggedOutViewController
看起来应该(如MenuLoggedInViewController
)。
优秀 - 我把我的framing代码放在'viewWillLayoutSubviews'中,现在一切正常!非常感谢 - 并感谢关于'didMoveToParentViewController'的提示 - 完全忘了补充一点! – Jimmery 2015-02-10 15:26:00