2011-07-25 46 views
5

每當我在橫向上將viewController添加到navigationController時,標題視圖會顯示在某些視圖上,而不會顯示在其他視圖上。即:我有一個導航控制器,添加3個視圖控制器,前兩個適當的顯示titleview,第三個根本不顯示。但是導航控制器從ViewController中抓取titleview,就像它應該的那樣,我把它的值寫到了控制檯,它是正確的,但它不會出於任何原因顯示在屏幕上。有任何想法嗎?UINavigationController TitleView不能從ViewController中顯示NavigationItem

噢耶是肖像取向完美的作品。

這裏是另一個有趣的部分,如果我將故障視圖控制器推入橫向導航控制器中titleView不存在,那麼在沒有任何用戶交互的情況下,我將設備旋轉回肖像並出現titleView,然後旋轉設備回到風景,它保持!

這就像我的TitleView的繪圖被封鎖,即使我使用InvokeOnMainThread。在該呼叫期間,主線程(或任何地方的任何地方)沒有任何運行。

這裏是我的結構:

Window 
    TabBarController 
    NavigationController 
     ViewController 
    NavigationController 
     ViewController 

這裏是我的操作順序:

  1. 創建視圖控制器
  2. 添加標題視圖中查看控制器
  3. 推送 - 視圖 - 控制器到NavigationController(InvokeOnMainThread)
+0

爲什麼你使用兩個導航控制器只使用一個Window TabBarController NavigationController ViewController就足夠了然後創建其他viewcontroller然後推送到它 –

+0

每個導航控制器代表一個不同的界面,顯示每個不同的選項卡。每個標籤只能使用一個導航控制器。 –

+0

在這裏你已經創建了兩個導航控制器3tabs.so創建像這樣的最後一個 –

回答

4

控制器被推後,您是否嘗試設置控制器標題?這種行爲發生在我和方式,以確保標題似乎是強制的設定在viewDidLoad中或viewWillAppear中方法的導航欄標題如下:

self.navigationController.navigationBar.topItem.title = @"The title"; 

self.navigationItem.title = @"The Title"; 

其它事情,發生在我身上的是在viewDidLoad方法中設置導航欄的左邊欄按鈕或右邊欄按鈕,但在設置viewWillAppear方法中的欄按鈕時它們顯示正確。

希望這會有所幫助。

+0

確實時機似乎是非常重要的。我在導航視圖委託的'willShowViewController'中設置了'titleView',而左側和右側的項目都沒問題,'titleView'會閃爍並消失。現在我直接在重寫的'pushViewController'方法中設置它。 – Rivera

+0

在viewWillAppear方法上設置self.navigationItem.title對我來說是個訣竅。在viewDidLoad上它不起作用 – apinho

0

我認爲你的問題可能是當你的函數被調用時,導航項目是零。所以當你調用self.navigationITem.title時,它什麼也不做。之後,當視圖旋轉時,navigationItem不再是零,所以改變標題的作品。

如果您在ViewDidLoad函數中執行代碼,請注意ViewDidLoad在有人第一次調用viewController.view時調用,而不是在第一次顯示視圖時調用。所以視圖可能還不在navigationController中。

例如,這可能happend如果你這樣做:

viewController.view.backgroundColor = ... ; 
[navigationController pushViewController:viewController] 

第一行會調用viewDidLoad中即使控制器不在navigationController呢。

相關問題