2014-09-30 83 views
5

我有一個相當直接的設置在我的iPhone應用程序,導航控制器和視圖控制器。視圖控制器有一個標題,對於我的大多數視圖來說,推送其他視圖控制器的方式是按預期工作的:標題用作導航欄上「後退」按鈕的標籤,並顯示新視圖。新視圖從堆棧彈出後,舊視圖將顯示其標題。NavigationBar內容從視圖彈出消失與prefersStatusBarHidden =是

但是,只要推送的視圖控制器實現了prefersStatusBarHidden並且返回值爲YES,那麼在從堆棧中彈出該視圖後,導航欄中的標題就消失了 - 它仍然是空的,甚至不會顯示我的自定義rightbarbuttonitem 。

此外,在橫向而不是縱向上執行此操作不會顯示此行爲 - 標題顯示正確。如果您在肖像中遇到此問題,則可以將手機重新轉換爲風景並再次轉換爲肖像,並且標題和其他所有內容都會重新出現。

我不能確定這是否是已經存在於iOS版的早期版本,但我目前正在與iOS 8

回答

4

我有同樣的問題,我的解決方法來解決這個問題是這樣的:

在視圖控制器是有prefersStatusBarHidden設置爲YES補充:

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [self.navigationController setNavigationBarHidden:YES]; 
    [self.navigationController setNavigationBarHidden:NO]; 
} 
+0

這類作品,但請注意,它會混淆交互式流行手勢。反覆點擊並左右拖動左邊緣會多次運行viewWillDisappear。不知何故,導致UINavigationController得到它的VC堆棧困惑,有時導致無限循環的後退按鈕(點擊後,動畫發生,但沒有VC彈出堆棧)。 – 2014-11-18 00:30:28

+0

適合我,儘管我不喜歡這個解決方案,但我會接受它作爲答案,直到有人提供更好的答案爲止......謝謝! – 2014-12-12 18:23:29

+3

向bugreport.apple.com提交了一個ID爲19416305的錯誤報告。如果可以,重複提交,謝謝! – 2015-01-08 20:53:50

0

看到它,我相信這是因爲prefersStatusBarHidden是一個應用程序範圍的設置,而不是每個視圖控制器。

您可以通過向推視圖控制器ViewWillDisappear方法

- (void)viewWillDisappear:(BOOL)animated { 
[UIApplication sharedApplication].statusBarHidden = NO; 
} 
+0

我不認爲這是一個應用程序範圍的設置,因爲它是一種方法,這應該被不想顯示狀態欄的視圖控制器覆蓋。狀態欄本身的行爲與預期相同,在推送時消失並在流行中重新出現 - 不幸的是,在視圖中明確顯示它不會有幫助。 – 2014-10-01 05:39:39