Возможно ли иметь жесты манипулятора контроллера навигации, когда его встроенный контроллер показан без использования методов делегата? - PullRequest
1 голос
/ 01 октября 2019

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

Я пытаюсь сделать выдвижную строку меню, ив настоящее время это встроенный 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)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...