關于導航控制器push到下一個界面 導航欄不出現問題的解決辦法

在項目中遇到一種情景,在導航控制器中有個界面A導航條需要隱藏而A的下一級界面B則需要顯示導航條。我剛開始的解決方案是在A的viewWillAppear方法中設置self.navigationController.navigationBar.hidden = YES;而在B的viewWillAppear方法中設置self.navigationController.navigationBar.hidden = NO。結果完全不能達到目的。后來終于找到了解決方案,那就是在A的viewWillAppear方法中不要使用self.navigationController.navigationBar.hidden = YES;這個方法而應該使用[self.navigationControllersetNavigationBarHidden:YESanimated:YES]這個方法,相應的在B的viewWillAppear方法中也不要使用self.navigationController.navigationBar.hidden = NO這個方法而應該使用[self.navigationControllersetNavigationBarHidden:NOanimated:YES]這個方法。注意:animated這個參數一定要設置為YES,因為使用[self.navigationController setNavigationBarHidden:YES animated:YES]之所以能達到上圖這種我們想要的效果就是因為有這個動畫,而這個動畫效果就是導航條隨著導航控制器的子VC的界面一起偏移。當然也可以把animated這個參數設置為和

-(void)viewWillAppear:(BOOL)animated的animated參數一致([self.navigationController setNavigationBarHidden:YES animated:animated]、[self.navigationController setNavigationBarHidden:NO animated:animated]),因為當界面是動畫顯示出來(如push、pop)的時候-(void)viewWillAppear:(BOOL)animated的animated參數本來就會是YES,而當界面不是動畫顯示出來的時候-(void)viewWillAppear:(BOOL)animated的animated參數會是NO而這個時候我們也不需要動畫的隱藏導航條。
當然也可以不用在B的viewWillAppear方法中而在A的- (void)viewWillDisappear:(BOOL)animated中調用[self.navigationController setNavigationBarHidden:NO animated:YES]方法

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容