2014-11-17 148 views
0

我有一個NavigationController,並且我想要從屏幕頂部製作一個視圖,並且坐在上方navigationBar上方。我從xib初始化視圖控制器,當我將它添加爲[self.view addSubview:myView];時,它完美地工作,但它位於導航欄下方。當我嘗試將其添加爲[self.navigationController.view addSubview:myView];時,它會按照預期將其放置在navigationBar的頂部,但視圖不會顯示放置在xib中的任何子視圖。我不明白爲什麼會發生這種情況,一直試圖解決這個問題好幾個小時。當作爲NavigationController的視圖的子視圖添加時,iOS視圖不顯示它的任何子視圖

UPDATE 從廈門國際銀行我的自定義視圖是搭配定製的視圖控制器類,我在裏面加入以下代碼:

- (void)viewDidAppear:(BOOL)animated { 
[super viewDidAppear:animated]; 

NSLog(@"!!! %i", [self.view.subviews count]); 

} 

如果我添加到MyView的它self.view打印1(有實際上是1子視圖),但是當我將它添加爲self.navigationController.view -viewDidAppear甚至沒有調用。但它確實出現在沒有子視圖的屏幕上。現在我更加困惑。

回答

0

原來我是個白癡。這是一個非常簡單的範圍問題。我在方法內部實例化了一個VC的局部變量,當然它在最後被釋放。只要我將VC分配給全局變量,所有人都開始像魅力一樣工作。那樣容易。

0

我認爲你需要使用:

[self.navigationController.navigationBar addSubview:MyView的]。

+0

不,仍然沒有子視圖。 – NKorotkov

+0

你確定,你添加完全需要的視圖?可能它沒有子視圖?嘗試檢查myView.subviews.count – mityaika07

+0

我敢肯定,因爲當我將此行更改爲'[self.view addSubview:myView];'子視圖按預期顯示。我真的很奇怪。 – NKorotkov

0

爲什麼不移動導航控制器如果你不需要它?另一種方法是隱藏導航欄,以便視圖佔據完整的空間,然後在需要時再次顯示導航欄。 如果您提供一些代碼的意見,我可以幫助更多。

+0

這確實是一個解決方案。這裏的問題是,我有一個視圖,它是navigationController.view的子視圖,並位於navigationBar下方(將其視爲navigationBar的背景,比bar本身更大),我也必須隱藏它。第二個問題是動畫不會那麼流暢。在我的情況下,放置navigationController視圖頂部的視圖會是更好的解決方案。 – NKorotkov

相關問題