4

因此,在我推動一個新的viewController到一個視圖的堆棧上,我將navigationBar設置爲隱藏我注意到,它在下一個屏幕被推動之前消失,並且滑動動畫發生(因爲我需要在頂部的UIToolbar)。查看大小設置導航欄隱藏與推/流行

所以問題1:有沒有辦法推動一個新的視圖控制器,並將導航欄設置爲隱藏,並且在屏幕上顯示新的視圖控制器之前不會獲取隱藏動畫。它看起來很有趣,導航欄隱藏然後推動新的視圖控制器。

一旦新的視圖控制器存在時,當我彈出它關閉,我設置導航欄後面

[self.navigationController.navigationBar setHidden:NO]; 

但是,當它被彈出時,導航欄不回任何更多。是否因爲此導航欄是針對當前的navigationController而不是在彈出窗口後顯示的新導航欄? (問題#2)

問題3:實現它沒有顯示我的導航欄,在被彈出之後提出的的viewController,在viewDidAppear,我加

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    [self.navigationController.navigationBar setHidden:NO]; 
} 

足見其的導航欄,但視圖大小不正確,因爲它好像是一旦導航欄被隱藏,視圖的其餘部分佔據了空白區域,然後navigationBar位於內容之上。我能做些什麼嗎?或者,我是否用push和pop不正確地處理它?(問題#3)。

謝謝!

回答

0

有趣的問題。您可以嘗試更改viewWillAppearviewWillDisappear中的hidden屬性,但似乎可能無法提供期望的結果。

您可以以模態方式呈現視圖控制器,而不是讓導航欄消失嗎?如果它是堆棧中的最後一個視圖控制器,那將是可能的。用戶看到視圖控制器以不同方式呈現也可能更有意義。這可能向用戶指示從該視圖控制器離開的導航不再使用後退按鈕完成。這可能比導航欄消失更合理。

如果你仍然希望視圖控制器從右側滑入,我認爲它不能用模態視圖控制器來完成。但是,您可以通過爲填滿屏幕的視圖設置動畫效果。 (您只需添加一個視圖,其中origin.x等於屏幕寬度,然後在動畫中將origin.x更改爲0.0,如果需要更多細節,請告知我。)

但是,我會推薦以不同於導航控制器顯示視圖的方式呈現視圖控制器。因爲從本質上講,您不再讓用戶離開此視圖,因爲他/她通常會從導航控制器中導航。 (所以,我對問題#3的回答是'是')。

1

我遇到了同樣的問題(只是相反:我從一個隱藏的NavigationBar開始,並將視圖推到了我想要的NavigationBar可見),並且實際上有一個非常簡單的修復。

只需更換您的來電:

[self.navigationController.navigationBar setHidden:NO]; 

[[self navigationController] setNavigationBarHidden:NO animated:YES];    

在我的代碼,我調用每個相應的視圖控制器的- (void)viewWillAppear:(BOOL)animated方法這些語句。

我剛剛按照您使用的順序(可見,然後隱藏)嘗試了這個解決方案,並且它看起來也工作得很好。