簡單的在特定的某些控制器中隱藏導航欄

相信大家在項目難免會遇到這樣一個情況:在一個navigation堆棧中,有一些特殊的控制器需要隱藏頂部的導航欄 ,一般情況下可能會想到在viewwillappear中設置setNavigationBarHidden = YES 這樣,然後再在viewwilldisappear中再將set hidden改成NO。這樣雖然最終達到在特定控制器中隱藏導航欄的目的,但是效果卻不是很好,因爲如果使用右滑來返回上個控制器的話會看到滑到一半當前控制器還沒消失的時候上面的導航欄就已經出現了,這時候可能會想到在viewdidiappear中將set hidden改成NO,雖然這樣右滑到一半不會出現導航欄,但是你會發現回到上一個控制器的時候導航欄並不是馬上出現的,而是等到了一會纔出現的。所以這樣的方法並不是最好的隱藏特定控制器導航欄的解決方案。那麼下面介紹一個簡單的方法:

在navigationController的rootviewcontroller中設置navigationController的delegate,並實現

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 

方法,在這裏進行viewcontroller的判斷,再用 [navigationController setNavigationBarHidden:YES animated:animated] 隱藏即可。

如此便可完美解決和集中控制在指定控制器中隱藏導航欄的需求了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章