Navigation( 基类 ) 后的侧滑 自定义操作(解决侧滑卡死问题)

作用
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

你可能感兴趣的:(Navigation( 基类 ) 后的侧滑 自定义操作(解决侧滑卡死问题))