navigationController系统的侧滑pop小记
系统的侧滑返回一般 我们会做自定义的base nav 做一些全局处理
如
1 2 3 4 5 6 7 8 9
| navigationBar.backIndicatorImage = UIImage(named: "nav_back") navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "nav_back") navigationBar.isTranslucent = true navigationBar.barTintColor = UIColor.white let attributes = [NSAttributedString.Key.foregroundColor:UIColor.black, NSAttributedString.Key.font:UIFont.systemFont(ofSize: 18)] navigationBar.titleTextAttributes = attributes navigationBar.shadowImage = UIImage()
|
重写push
1 2 3 4 5 6 7
| if viewControllers.count > 0 { viewController.hidesBottomBarWhenPushed = true } let item = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil) self.topViewController?.navigationItem.backBarButtonItem = item super.pushViewController(viewController, animated: animated)
|
然后一般 有些页面我们会重写leftBarButtonItem 会发现 系统自带的侧滑返回失效了
这个时候我们需要做一下处理恢复整个功能
在当前VC 中 (在使用中发现当前vc 销毁后 这个代理会影响原本默认的侧滑,所以放到自定义navVc 中, 去使用了, 且如果不需要侧滑 可以根据最上册的vc 是谁去做特别判断)
1
| self.navigationController?.interactivePopGestureRecognizer?.delegate = self
|
并实现代理
1 2 3 4 5
| func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { return true }
|