參考來源鏈接:http://www.lxweimin.com/p/1d1e20581624
之前做法:
隱藏導航條代碼示例
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:animated];
} - (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:animated];
}
存在問題:
兩個相鄰的controller 都這么寫 ,就會出現 原聲的導航欄 在 push/pop的時候 飛來飛去 像BUG...
原因:兩個controller 先后控制 navigationBar的 hide/appear 導致系統動畫錯亂。
解決辦法: 將控制navigationBar的 setNavigationBarHidden: 方法 只在 viewWillAppear 中 實現。
統一添加 。
將所有controller 都是 基于同一個 父類的,這樣簡單了很多。
在父類中 添加 一個 @property(nonatomic,assign)BOOL hideNavigationBar;
如果需要 隱藏當前controller 的bar 就在 viewdidload 中 設置為 YES 即可~
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:self.hideNavigationBar animated:animated];
}