向后滑动添加动作swift 4

时间:2019-01-07 22:11:05

标签: ios swift uinavigationcontroller back

我已将其中一个视图控制器的导航栏中的后退按钮更改为自定义按钮,并按下了该按钮即可执行该操作:

self.navigationItem.hidesBackButton = true
let backButton = UIBarButtonItem(image: UIImage(named: "backArrow"), style: .plain, target: self, action: #selector(self.back))
self.navigationItem.leftBarButtonItem = backButton

这很好用,我可以使用以下方法保持向后滑动以弹出视图控制器:

self.interactivePopGestureRecognizer?.isEnabled = true
self.interactivePopGestureRecognizer?.delegate = self

在我的导航控制器文件中。不幸的是,当我向后滑动时,我无法(或者我还没有弄清楚)在视图控制器中调用back()函数来更改后退按钮。我如何以及在哪里可以检测到要向后滑动,以便可以在该特定视图控制器中调用back函数?

1 个答案:

答案 0 :(得分:2)

像这个答案一样,您可以订阅手势:https://stackoverflow.com/a/36893464/1484378

// In UINavigationController

override func viewDidLoad() {
    super.viewDidLoad()
    self.interactivePopGestureRecognizer?.addTarget(self, action:#selector(self.handlePopGesture))
}

@objc func handlePopGesture(gesture: UIGestureRecognizer) -> Void {
    if gesture.state == .began {
        back()
    }
}

您可能必须添加一些自定义逻辑才能访问视图控制器的back方法,例如:if let vc = visibleViewController as? MyViewController { vc.back() }