大家在開發(fā)中稿静,有些viewcontroller需要隱藏navigationbar梭冠,經(jīng)常在這跳轉(zhuǎn)的時候會出現(xiàn)黑條,白條的情況改备,在網(wǎng)上一查大部分給出的方案是在
- (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];
}
大部分情況這樣確實把問題解決了控漠,代碼也不難理解在這個viewcontroller將要出現(xiàn)的把navigationbar隱藏,在這個viewcontroller將要消失的時候把navigationbar重新展現(xiàn)出來悬钳。
可是當我們下一個跳轉(zhuǎn)過去的viewcontroller也要隱藏navigationbar的時候盐捷,你的做法肯定也是復制上面的代碼到需要隱藏的viewcontroller對吧,這時候你發(fā)現(xiàn)閃現(xiàn)的黑塊又出現(xiàn)了默勾, 為什么呢碉渡?
問題的關(guān)鍵就在
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:animated];
}
因為先是yes然后no然后yes,中間有個閃現(xiàn)的no。
大家就會發(fā)現(xiàn)我能不能做到不管怎么跳轉(zhuǎn)母剥,我都能隨心所欲的控制我的navigationbar出現(xiàn)和隱藏呢滞诺,答案是能的形导。
一般大家都有基類viewcontroller,只要在基類viewcontroller中
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:self.navigationHidden animated:animated];
}
這樣你就隨心所欲的控制了习霹,只要你想要hidden朵耕。給navigationHidden屬性賦值yes就好了。
方式二:根據(jù)navigation的代理方法來設(shè)置
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
BOOL isHiddenNavBar = [viewController isKindOfClass:[self class]];
[self.navigationController setNavigationBarHidden:isHiddenNavBar animated:YES];
}
文章完淋叶,但愿有幫到你阎曹。比心