UINavigationBar隐藏带来的一些问题

项目有一个需求是在UINavigationController的rootViewController中显示navigationBar而在之后的页面隐藏,navigationBar隐藏之后会有几个问题。

第一个问题是在从之后的viewController中pop到rootViewController的时候rootViewController的navigatoinBar也变成了隐藏状态,这个好解决,只需在rootViewController中的viewWillAppear方法中将navigationBar的hidden属性设置为NO就可以了


-(void)viewWillAppear:(BOOL)animated{

[superviewWillAppear:animated];

[self.navigationControllersetNavigationBarHidden:NO animated:YES];

}

第二个问题是navigationController的navigationBar隐藏之后,系统自带的侧滑返回手势就失效了。解决办法如下:

self.navigationController.interactivePopGestureRecognizer.delegate = self;

需要注意的是,在这样处理之后。当navigationController pop 到rootViewController之后,使用侧滑手势会让页面卡住,这时只需做如下设置就可以解决问题

- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}

同时,也需要在之后push的viewController中做出如下设置

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}

或者,你可以在封装UINavigationController类的时候做一个判断,在当前控制器是根控制器的时候禁掉侧滑手势。
欢迎拍砖

你可能感兴趣的:(UINavigationBar隐藏带来的一些问题)