歡迎動(dòng)畫.gif
條條大路通羅馬运褪,你是用這種方法隱藏和顯示導(dǎo)航欄的嗎?
- (void)viewWillAppear:(BOOL)animated {
[ super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
實(shí)話說玖瘸,2015年我那會(huì)做iOS的時(shí)候也是這么做的[捂臉][捂臉],雖然當(dāng)時(shí)這樣做可以實(shí)現(xiàn)想要的結(jié)果秸讹,但是會(huì)很累,需要在控制中的每個(gè)顯示和注銷的- (void)viewWillAppear:(BOOL)animated - (void)viewWillDisappear:(BOOL)animated 添加一段代碼雅倒。
真心講這樣寫的代碼很低效璃诀,自己的都不想看。為了讓代碼更優(yōu)雅屯断,讓開發(fā)更高效文虏,我們看看更優(yōu)雅的編碼方式;
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
}
這個(gè)方法不知道大家熟不熟悉殖演,這個(gè)就是UINavigationController代理方法中的一個(gè)氧秘,它在有導(dǎo)航欄的控制器中,當(dāng)控制器加載完趴久,導(dǎo)航欄要出現(xiàn)的時(shí)候會(huì)調(diào)用丸相。
既然是導(dǎo)航欄要出現(xiàn)的時(shí)候調(diào)用,那我們是不是可以在這里做判斷呢彼棍,事實(shí)證明是可以的
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
BOOL isHiddenNavBar = [viewController isKindOfClass:[self class]];
[self.navigationController setNavigationBarHidden:isHiddenNavBar animated:YES];
}
當(dāng)然這樣做的前提是我們要實(shí)現(xiàn)實(shí)現(xiàn)UINavigationController的delegate
git: https://github.com/huxiao123/NavigationDemo