作用
1、我們可以自定義側(cè)滑的操作
2、可以解決在RootViewController時(shí)側(cè)滑引發(fā)的卡死問(wèn)題
3、self.interactivePopGestureRecognizer.enabled = NO; ( 激活 )
(寫在NavigationViewController的基類中)
首先我們讓我們的控制器的Pop手勢(shì)的代理設(shè)置為當(dāng)前控制器
設(shè)置代理 UIGestureRecognizerDelegate
__weak typeof(self) weakSelf = self;
self.interactivePopGestureRecognizer.delegate = weakSelf;
然后我們?nèi)?shí)現(xiàn)他的代理方法
#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 方法 來(lái)統(tǒng)一返回按鈕
/*!
* @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) {
// 自定義一個(gè) BarButtonItem 的按鈕
viewController.navigationItem.leftBarButtonItem = [self creatBackButton];
}
}
在 chirldController 中設(shè)置了當(dāng)前控制器為代理 的話
在 willap 設(shè)置代理
在 willdisap 設(shè)置self.navigationcontroller 為 delegate