項(xiàng)目有一個需求是在UINavigationController的rootViewController中顯示navigationBar而在之后的頁面隱藏碌冶,navigationBar隱藏之后會有幾個問題把介。
第一個問題是在從之后的viewController中pop到rootViewController的時候rootViewController的navigatoinBar也變成了隱藏狀態(tài),這個好解決瓤荔,只需在rootViewController中的viewWillAppear方法中將navigationBar的hidden屬性設(shè)置為NO就可以了
-(void)viewWillAppear:(BOOL)animated{
[superviewWillAppear:animated];
[self.navigationControllersetNavigationBarHidden:NO animated:YES];
}
第二個問題是navigationController的navigationBar隱藏之后随常,系統(tǒng)自帶的側(cè)滑返回手勢就失效了度陆。解決辦法如下:
self.navigationController.interactivePopGestureRecognizer.delegate = self;
需要注意的是鸵熟,在這樣處理之后。當(dāng)navigationController pop 到rootViewController之后扣典,使用側(cè)滑手勢會讓頁面卡住妆毕,這時只需做如下設(shè)置就可以解決問題
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
同時,也需要在之后push的viewController中做出如下設(shè)置
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}
或者贮尖,你可以在封裝UINavigationController類的時候做一個判斷笛粘,在當(dāng)前控制器是根控制器的時候禁掉側(cè)滑手勢。
歡迎拍磚