iOS導航欄隱藏
阿新 • • 發佈:2018-11-02
簡介
我們在專案中經常遇到.從二級控制器跳轉到不需要導航欄的控制器中,經常用的就是下面第一種做法:- 第一種做法
-(void)viewWillAppear:(BOOL)animated { self.navigationController.navigationBarHidden = YES; [super viewWillAppear:animated]; } - (void)viewWillDisappear:(BOOL)animated { self.navigationController.navigationBarHidden = NO; [super viewWillDisappear:animated]; }
但是,有時候第一種方法不起作用;我們就需要設定self為導航控制器的代理,實現代理方法,在將要顯示控制器中設定導航欄隱藏和顯示,使用這種方式不僅完美切合滑動返回手勢,同時也解決了切換tabBar的時候,導航欄動態隱藏的問題. - 第二種做法
@interface viewController ()<UINavigationControllerDelegate> @end @implementation viewController - (void)viewDidLoad { // self.navigationController.navigationBarHidden = YES; [super viewDidLoad]; // Do any additional setup after loading the view. [self setUpUI]; // 設定導航控制器的代理為self self.navigationController.delegate = self; } #pragma mark - UINavigationControllerDelegate // 將要顯示控制器 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { // 判斷要顯示的控制器是否是自己 BOOL isShowHomePage = [viewController isKindOfClass:[self class]]; [self.navigationController setNavigationBarHidden:isShowHomePage animated:YES]; }