參考來(lái)源鏈接:http://www.reibang.com/p/1d1e20581624
之前做法:
隱藏導(dǎo)航條代碼示例
- (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];
}
存在問(wèn)題:
兩個(gè)相鄰的controller 都這么寫(xiě) 掠归,就會(huì)出現(xiàn) 原聲的導(dǎo)航欄 在 push/pop的時(shí)候 飛來(lái)飛去 像BUG...
原因:兩個(gè)controller 先后控制 navigationBar的 hide/appear 導(dǎo)致系統(tǒng)動(dòng)畫(huà)錯(cuò)亂惊楼。
解決辦法: 將控制navigationBar的 setNavigationBarHidden: 方法 只在 viewWillAppear 中 實(shí)現(xiàn)。
統(tǒng)一添加 循未。
將所有controller 都是 基于同一個(gè) 父類(lèi)的桑李,這樣簡(jiǎn)單了很多贱迟。
在父類(lèi)中 添加 一個(gè) @property(nonatomic,assign)BOOL hideNavigationBar;
如果需要 隱藏當(dāng)前controller 的bar 就在 viewdidload 中 設(shè)置為 YES 即可~
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:self.hideNavigationBar animated:animated];
}