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类的时候做一个判断,在当前控制器是根控制器的时候禁掉侧滑手势。
欢迎拍砖

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,245评论 4 61
  • 有感 ....请允许我在文章开篇爆句粗口, 就这导航栏错乱这 Bug, 我真日了狗了. 自从测试小伙伴发现这个问...
    李国安阅读 6,455评论 59 108
  • 可变变量是php独有的
    43e03964ffe2阅读 154评论 0 0
  • 分层教学法不是对教学主体「学生」的歧视,而是为了让学生的学习效率更大地提高! 分层教学法 是在学生知识基础、智力...
    静_静_阅读 1,461评论 0 2
  • 本人追星🐶一枚 其实本人性格是文静内向不喜说话那种 朋友圈也就寥寥可数的那几位 本以为生活就这样平淡的虚度过去了 ...
    葶瑜嫣妍阅读 360评论 0 1