В моем текущем проекте я использую один основной 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
}
}
}
}