许多APP都采用了侧滑控制器代替导航栏返回操作,不知道的效果伴们参考下面代码。
一、实现侧滑返回
第一步:在根导航栏控制器中加入如下代码:
id target = self.interactivePopGestureRecognizer.delegate;
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)];
pan.delegate = self;
[self.view addGestureRecognizer:pan];
self.interactivePopGestureRecognizer.enabled = NO;
@interface LenNavigationController ()<UIGestureRecognizerDelegate>
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
if (self.childViewControllers.count == 1)
{
return NO;
}
return YES;
}
这种侧滑如果所有页面都有显示导航栏的话基本不用做下面的操作,怕就怕有些地方需要隐藏导航栏,全屏显示页面,不用担心,新编教你一招。
二、侧滑返回导致导航栏标题显示错误
一级页面没有显示导航栏,二级页面显示导航栏,在侧滑返回拖拽不完全时,导航栏上的标题惨不忍睹,解决办法就是我们需要在控制器UIViewController中添加视图生命周期方法ViewWillApper ViewWillDisapper,页面出现和消失,相信很多初级开发者都是直接写代码了,一般不会添加代码:
[super viewWillDisappear:animated];
1⃣️[self.navigationController setNavigationBarHidden:NO animated:animated];//以页面消失为例
不建议用下面代码:
2⃣️self.navigationController.navigationBarHidden = NO;
代码2⃣️就会导致侧滑时导航栏标题显示错误,push到子页面时,导航栏标题还是上一个页面的。具体为什么会出现这个问题,小编一开始也没搞懂,一万个为什么从眼前飘过,后面经过调试,找到解决方法就是方法1⃣️,然后在需要的地方添加这行代码,此类测试的bug瞬间就解决了。
不知道各位大神or菜鸟们你们是否也遇到同样的问题,如果看了我写的还不明白的可以加Q363819948联系,小编是非常乐意与您交流的技术的