在項(xiàng)目中遇到一種情景,在導(dǎo)航控制器中有個(gè)界面A導(dǎo)航條需要隱藏而A的下一級(jí)界面B則需要顯示導(dǎo)航條杰扫。我剛開始的解決方案是在A的viewWillAppear方法中設(shè)置self.navigationController.navigationBar.hidden = YES;而在B的viewWillAppear方法中設(shè)置self.navigationController.navigationBar.hidden = NO。結(jié)果完全不能達(dá)到目的玻佩。后來終于找到了解決方案谐鼎,那就是在A的viewWillAppear方法中不要使用self.navigationController.navigationBar.hidden = YES;這個(gè)方法而應(yīng)該使用[self.navigationControllersetNavigationBarHidden:YESanimated:YES]這個(gè)方法,相應(yīng)的在B的viewWillAppear方法中也不要使用self.navigationController.navigationBar.hidden = NO這個(gè)方法而應(yīng)該使用[self.navigationControllersetNavigationBarHidden:NOanimated:YES]這個(gè)方法段只。注意:animated這個(gè)參數(shù)一定要設(shè)置為YES腮猖,因?yàn)槭褂肹self.navigationController setNavigationBarHidden:YES animated:YES]之所以能達(dá)到上圖這種我們想要的效果就是因?yàn)橛羞@個(gè)動(dòng)畫,而這個(gè)動(dòng)畫效果就是導(dǎo)航條隨著導(dǎo)航控制器的子VC的界面一起偏移赞枕。當(dāng)然也可以把a(bǔ)nimated這個(gè)參數(shù)設(shè)置為和
-(void)viewWillAppear:(BOOL)animated的animated參數(shù)一致([self.navigationController setNavigationBarHidden:YES animated:animated]澈缺、[self.navigationController setNavigationBarHidden:NO animated:animated])坪创,因?yàn)楫?dāng)界面是動(dòng)畫顯示出來(如push、pop)的時(shí)候-(void)viewWillAppear:(BOOL)animated的animated參數(shù)本來就會(huì)是YES姐赡,而當(dāng)界面不是動(dòng)畫顯示出來的時(shí)候-(void)viewWillAppear:(BOOL)animated的animated參數(shù)會(huì)是NO而這個(gè)時(shí)候我們也不需要?jiǎng)赢嫷碾[藏導(dǎo)航條莱预。
當(dāng)然也可以不用在B的viewWillAppear方法中而在A的- (void)viewWillDisappear:(BOOL)animated中調(diào)用[self.navigationController setNavigationBarHidden:NO animated:YES]方法