作用
1、我们可以自定义侧滑的操作
2、可以解决在RootViewController时侧滑引发的卡死问题
3、self.interactivePopGestureRecognizer.enabled = NO; ( 激活 )
(写在NavigationViewController的基类中)
首先我们让我们的控制器的Pop手势的代理设置为当前控制器
设置代理 UIGestureRecognizerDelegate
__weak typeof(self) weakSelf = self;
self.interactivePopGestureRecognizer.delegate = weakSelf;
然后我们去实现他的代理方法
#pragma mark - UIGestureRecognizerDelegate
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer*)gestureRecognizer{
//判断是否为rootViewController
if (self&& self.navigationController.viewControllers.count == 1) {
// 例如 [self dismissViewController:NO animation:nil];
return NO;
}
return YES;
}
重写 pushViewController 方法 来统一返回按钮
/*!
* @author Jing, 16-09-07 15:09:47
*
* @brief 重写返回按钮
*/
-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[super pushViewController:viewController animated:animated];
if (viewController.navigationItem.leftBarButtonItem ==nil && self.viewControllers.count >1) {
// 自定义一个 BarButtonItem 的按钮
viewController.navigationItem.leftBarButtonItem = [self creatBackButton];
}
}
在 chirldController 中设置了当前控制器为代理 的话
在 willap 设置代理
在 willdisap 设置self.navigationcontroller 为 delegate