Swift Navigation Controller可以滑动到任何地方

时间:2017-04-05 15:13:32

标签: swift xcode uitableview uinavigationcontroller

我有一个带有嵌入式导航控制器的视图控制器,我希望所提供的控制器能够在任何地方滑动以返回到根控制器。如何使用SwipeGesture或扩展导航控制器?

另请注意,所提供的控制器是一个表格视图,并有单元格笔尖。

2 个答案:

答案 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)
}