Как уже упоминалось, я хотел бы знать, возможно ли использовать базовые жесты ручки навигационного контроллера при отображении встроенного контроллера без методов делегирования.
Я пытаюсь сделать выдвижную строку меню, ив настоящее время это встроенный viewcontroller, который обрабатывает скольжение из меню методом делегата. Я хотел бы сделать так, чтобы встроенный viewcontroller не знал, что он встроен в контроллер выдвижного меню.
Для иерархии у меня есть ContainerViewController, это отвечает за все это. ContainerViewController имеет MenuViewController (это обрабатывает выдвижное меню) и NavigationController с HomeController в качестве rootViewController. HomeController - это контроллер представления, который я встраиваю в контроллер навигации.
Я бы хотел, чтобы ContainerViewController обрабатывал UIEdgePanGesture, даже когда показывается встроенный HomeController. В настоящее время HomeController имеет метод делегата, который предупреждает ContainerViewController о создании UIEdgePanGesture и, таким образом, открывает меню.
Я попытался применить UIPanGestureRecognizer к представлению NavigationControllers, но безрезультатно.
Это то, чего я хотел бы избежать, так как на самом деле нет причин, по которым у каждого view-контроллера есть обязанности по отношению к slideMenu, поскольку они не должны знать, что слайд-меню вообще существует.
protocol HomeControllerDelegate {
func handleMenuToggle()
func handleEdgePan(sender: UIScreenEdgePanGestureRecognizer)
}
class HomeController: UIViewController {
@objc func handleMenuToggle() {
//print("Menu was toggled...")
delegate?.handleMenuToggle()
}
@objc func handleEdgePan(sender: UIScreenEdgePanGestureRecognizer) {
//print("Menu was edgePanned...")
delegate?.handleEdgePan(sender: sender)
}
}