2012-06-25 79 views
0

我想在我的應用程序添加一些導航控制器,它是某事喜歡:UINavigationController的導航欄的可視性設置爲不工作

在我的索引頁視圖控制器

,我嘗試初始化導航控制器是這樣的:

-(void)viewDidLoad{ 
    ... 
    //allocate a navigation controller. 
    myNavigationController = [[UINavigationController alloc]init]; 
    myNavigationController.delegate = self; 
    myNavigationController.navigationBar.hidden = YES; 
    [self.view addSubview:myNavigationController.view]; 

    [myNavigationController pushViewController:tabViewController animated:YES]; 
    [self presentModalViewController:myNavigationController animated:YES]; 
} 

這裏,索引頁面視圖控制器是我的應用程序的根視圖控制器,它只是一個普通的UIViewController。

[myNavigationController pushViewController:tabViewController animated:YES]; 

這裏的tabViewController我已經被推入導航控制器是一個自定義TabView的控制器,其利用一個容器視圖的保持標籤按鈕,並且還適用於標籤切換的導航控制器。

這裏的問題是:

myNavigationController.navigationBar.hidden = YES; 

,因爲我已經做導航條無形的,它並沒有顯示時,我的自定義視圖控制器顯示,但是當我想切換到其他視圖控制器與導航控制器,我也希望導航欄可見:

myNavigationController.navigationBar.hidden = NO; 
MyViewController *toSwitchNC = [[MyViewController alloc]init]; 
[myNavigationController pushViewController:toSwitchNC animated:YES]; 

導航欄不會再顯示。我也試圖把:

self.navigationController.navigationBar.hidden = NO 
在MyViewController的viewDidLoad,ViewDidAppear甚至在導航控制器的委託方法

,也沒有顯示導航欄也沒有。

那麼它有什麼問題?爲什麼我初始化導航欄首先是隱形的,即使我將隱藏標誌設置爲假,它也不會再顯示。

+0

嗨,我試圖擺脫我的自定義選項卡視圖中的導航控制器,似乎導航可見性集現在起作用。但是真正發生了什麼?我的索引視圖控制器的導航控制器推動我的自定義選項卡視圖,其中也包含一些導航控制器,這是需要避免的錯誤方式或任何建議? – David

回答

0

好吧,我已通過刪除我的索引頁面視圖控制器中的導航控制器容器來修復此問題。這可能是一個愚蠢的問題,因爲apple在開發人員文檔中正式聲明導航視圖控制器應儘可能放在視圖堆棧中。由於IOS是一個封閉的系統,誰知道WTH會在Apple之外進行。