美文网首页
导航控制器使用手势滑动返回上一个界面中途导航条消失的解决方法

导航控制器使用手势滑动返回上一个界面中途导航条消失的解决方法

作者: 每儿一天 | 来源:发表于2018-01-10 18:11 被阅读21次

粘贴这哥们的内容之前我想说下:

这个问题之前真的没怎么在乎,以为是导航栏自己系统自带的, 但是真的自己看了之后才发现,set方法与. 方法的不同,老铁们以后注意了。

在项目中遇到一种情景,在导航控制器中有个界面A导航条需要隐藏而A的下一级界面B则需要显示导航条。我刚开始的解决方案是在A的viewWillAppear方法中设置self.navigationController.navigationBar.hidden = YES;而在B的viewWillAppear方法中设置self.navigationController.navigationBar.hidden = NO。本来以为没什么问题,结果无意中发现在B界面使用iOS7以上系统的手势滑动返回A时,B界面刚有一点偏移A的viewWillAppear方法就已经调用了导致A界面尚未完全显示到窗口导航条就已经消失了,如图

这是因为导航条是属于导航控制器的而并不是导航控制器的每个子VC都有一个属于自己的导航条。

而我实际想要的效果却是在手势滑动返回A界面途中导航条随着B界面一起偏移,如图

后来终于找到了解决方案,那就是在A的viewWillAppear方法中不要使用self.navigationController.navigationBar.hidden = YES;这个方法而应该使用[self.navigationControllersetNavigationBarHidden:YESanimated:YES]这个方法,相应的在B的viewWillAppear方法中也不要使用self.navigationController.navigationBar.hidden = NO这个方法而应该使用[self.navigationControllersetNavigationBarHidden:NOanimated:YES]这个方法。注意:animated这个参数一定要设置为YES,因为使用[self.navigationController setNavigationBarHidden:YES animated:YES]之所以能达到上图这种我们想要的效果就是因为有这个动画,而这个动画效果就是导航条随着导航控制器的子VC的界面一起偏移。当然也可以把animated这个参数设置为和

-(void)viewWillAppear:(BOOL)animated的animated参数一致([self.navigationController setNavigationBarHidden:YES animated:animated]、[self.navigationController setNavigationBarHidden:NO animated:animated]),因为当界面是动画显示出来(如push、pop)的时候-(void)viewWillAppear:(BOOL)animated的animated参数本来就会是YES,而当界面不是动画显示出来的时候-(void)viewWillAppear:(BOOL)animated的animated参数会是NO而这个时候我们也不需要动画的隐藏导航条。

当然也可以不用在B的viewWillAppear方法中而在A的- (void)viewWillDisappear:(BOOL)animated中调用[self.navigationController setNavigationBarHidden:NO animated:YES]方法

转自:http://blog.csdn.net/yz_lby/article/details/49082131

相关文章

  • 关于滑动返回手势新发现

    相信对于滑动返回手势大家都不会陌生了,不就是导航控制器自带的滑动返回手势嘛,系统自带的功能。当自定义导航条的返回按...

  • 导航控制器使用手势滑动返回上一个界面中途导航条消失的解决方法

    粘贴这哥们的内容之前我想说下: 这个问题之前真的没怎么在乎,以为是导航栏自己系统自带的, 但是真的自己看了之后才发...

  • 手动实现滑动返回功能

    今天在项目的开发中自定义了导航条的返回按钮,导致覆盖了系统的滑动返回功能,侧滑无法返回上一个界面,解决方法如下: ...

  • pop手势

    需求:A控制器是我push过来的,我希望这个控制器只能点击导航条左边的返回按钮来pop,而侧边右滑动的手势pop我...

  • iOS 导航栏技巧

    1.当使用自定义的左侧导航栏的按钮的时候,左滑返回手势失效: 2.导航条的穿透效果:可用于用户界面 3.设置导航条的图片

  • 滑动返回功能延伸——全屏滑动返回(4行代码快速实现)

    上一篇文章提到自定义导航条(NavigationBar)覆盖系统返回按钮,导致滑动功能消失的解决方法后,有朋友提出...

  • 关闭导航的Pop手势

    前言:例如我们有两个控制器A和B, 从A界面调转到B界面(iOS7--系统自带的向右滑动手势返回上一个界面), 也...

  • 全屏滑动返回

    1.导航控制器自带了滑动返回(iOS7) 2.但是设置界面没有滑动返回功能 3.恢复滑动返回 分析:为什么滑动返回...

  • 自定义导航栏实现全屏滑动返回

    导航控制器默认自带了侧滑功能,当用户在界面的左边滑动的时候,就会有侧滑功能打印导航控制器自带的滑动手势,看下它的真...

  • ### 导航栏NavigationBar的常见问题

    [TOC] 目录 自定义导航栏按钮 调整导航栏按钮位置 自定义返回按钮后滑动返回手势失效 全屏滑动返回手势 导航栏...

网友评论

      本文标题:导航控制器使用手势滑动返回上一个界面中途导航条消失的解决方法

      本文链接:https://www.haomeiwen.com/subject/vqtanxtx.html