當您進入由搜索顯示控制器處理的搜索欄時,它將向上滑動視圖並將導航欄向上推。這很容易做到,但是,當您單擊搜索結果並在導航控制器的堆棧上按下新視圖時,導航欄會從右側滑入視圖!搜索顯示控制器如何隱藏導航欄?
這是如何完成的?如果您只需將導航欄設置爲隱藏或顯示,就會立即發生。我無法弄清楚它是如何隱藏在一個視圖控制器中的!
非常感謝,
邁克爾
當您進入由搜索顯示控制器處理的搜索欄時,它將向上滑動視圖並將導航欄向上推。這很容易做到,但是,當您單擊搜索結果並在導航控制器的堆棧上按下新視圖時,導航欄會從右側滑入視圖!搜索顯示控制器如何隱藏導航欄?
這是如何完成的?如果您只需將導航欄設置爲隱藏或顯示,就會立即發生。我無法弄清楚它是如何隱藏在一個視圖控制器中的!
非常感謝,
邁克爾
您可以動畫導航欄的過渡。有關更多詳細信息,請參閱-setNavigationBarHidden:animated:
。
如果你需要做到這一點每個視圖控制器的基礎上,只覆蓋視圖控制器的-viewDidAppear:
和-viewWillDisappear:
方法,例如:
- (void) viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
- (void) viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
以上將隱藏導航欄時,該視圖控制器推在導航堆棧頂部,並在視圖控制器彈出時顯示導航欄。
您可以隨時撥打-setNavigationBarHidden:animated:
,但這兩種方法對於應用大量UI更改很有用。
-(void)viewDidLayoutSubviews{
[self.navigationController setNavigationBarHidden:NO animated:NO];
}
它不會隱藏導航欄。
是的但那會隱藏導航欄,當你推動另一個視圖控制器時,它仍然是隱藏的。即使您在推新控制器時顯示導航欄,您也會看到導航欄顯示在前一個控制器上。這是因爲導航欄對於導航控制器堆棧上的所有控制器都是相同的欄。因此,對於搜索顯示控制器如何執行它的操作感到困惑! – 2009-11-20 01:14:01
查看編輯答案。您可以在推送/彈出視圖控制器時爲導航欄設置動畫。 – 2009-11-20 01:55:25
啊啊不行!天才!我不知道在viewWillAppear/Disappear中放置顯示/隱藏代碼會對導航欄的顯示方式產生任何影響!非常感謝,我在這個問題上被困了好幾個小時! – 2009-11-20 02:10:24