我有一个带有嵌入式导航控制器的视图控制器,我希望所提供的控制器能够在任何地方滑动以返回到根控制器。如何使用SwipeGesture或扩展导航控制器?
另请注意,所提供的控制器是一个表格视图,并有单元格笔尖。
答案 0 :(得分:2)
根据您的指示,您的桌面视图上的普通手势识别器就足够了。
我会做这样的事情:
override func viewDidLoad() {
super.viewDidLoad()
let gesture = UISwipeGestureRecognizer(target: self, action: #selector(dismiss(fromGesture:)))
tableView.addGestureRecognizer(gesture)
}
@objc func dismiss(fromGesture gesture: UISwipeGestureRecognizer) {
//Your dismiss code
//Here you should implement your checks for the swipe gesture
}
如果你想禁用后退手势的默认行为:
navigationController?.interactivePopGestureRecognizer?.isEnabled = false
我希望它有所帮助。 :)
答案 1 :(得分:0)
我从 navigationController 中删除了所有 viewController,除了当前显示的一个和我想通过滑动返回的那个。
我的 viewControllers 层次结构: AViewController -> BViewController -> CViewController
假设我当前正在显示 CViewController 并且想要向后滑动以转到 AViewController。默认情况下,当从 CViewController 滑回时,我会回到 BViewController,它位于 CViewController 之前。所以当 CViewController 显示时,我从 navigationController 中删除 BViewController,我可以很好地滑回 AViewController
self.navigationController?.viewControllers.removeAll {
!($0 is AViewController) && !($0 is CViewController)
}