UINavigation Обрабатывать определенный удар назад для некоторых ViewController - PullRequest
1 голос
/ 03 мая 2019

В моем текущем проекте я использую один основной UINavigationController, и я выдвинул каждый контроллер, который я хочу представить. Кроме того, я включил всплывающий жест из пользовательского интерфейса по умолчанию для UINavigationController, который, когда я проведу пальцем по краю с левой стороны экрана, отобразит мой контроллер вида, и все будет работать нормально.

self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false
self.navigationController?.interactivePopGestureRecognizer?.delegate = self

extension MyCustomViewController: UIGestureRecognizerDelegate{
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return true
    }

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return gestureRecognizer.isKind(of: UIScreenEdgePanGestureRecognizer.self)
    }
}

Но в некоторых случаях мне нужно выполнить определенное действие, когда я провожу свой ViewController. Вместо использования моего ViewController я хочу использовать эту функцию:

extension UINavigationController {
    func backToViewController(vc: Swift.AnyClass) {
        for element in viewControllers as Array {
            if element.isKind(of: vc) {
                self.popToViewController(element, animated: true)
                break
            }
        }   
    }
}
...