Как заставить работать swipe gesture в uinavigationcontroller?

Чтобы заставить работать свайп-жест в UINavigationControoler в iOS, необходимо выполнить несколько шагов.

1. Добавьте свайп-жест к контроллеру навигации. Это можно сделать, используя метод addGestureRecognizer(_:) для свойства interactivePopGestureRecognizer контроллера навигации. Вот пример кода:

if let navigationController = self.navigationController {
    let swipeGestureRecognizer = UISwipeGestureRecognizer(target: navigationController, action: #selector(navigationController.handleSwipeFromLeft))
    swipeGestureRecognizer.direction = .left
    navigationController.interactivePopGestureRecognizer?.addGestureRecognizer(swipeGestureRecognizer)
}

В этом коде мы создаем новый свайп-жест, указываем его направление влево и добавляем его к свойству interactivePopGestureRecognizer контроллера навигации. Обратите внимание, что мы также указываем селектор для метода, который будет вызван при выполнении жеста (handleSwipeFromLeft).

2. Реализуйте метод handleSwipeFromLeft в контроллере навигации, чтобы выполнить необходимые действия при свайпе. Например, вы можете использовать метод popViewController(animated:) для возврата к предыдущему контроллеру. Вот пример реализации:

@objc func handleSwipeFromLeft() {
    if let navigationController = self.navigationController {
        navigationController.popViewController(animated: true)
    }
}

3. Убедитесь, что ваши контроллеры навигации наследуются от UINavigationControllerDelegate и установите делегат контроллера навигации в self. Пример:

class YourNavigationController: UINavigationController, UINavigationControllerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        self.delegate = self
    }
    
    // Другие методы контроллера навигации...
}

Вот и все! Теперь свайп-жест должен работать в вашем контроллере навигации.