我有兩個子視圖控制器,據我所知是相同的,但其中一個意外行事。相同的視圖控制器顯示不同
兩個子視圖控制器被稱爲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