Добавление действия к смахиванию назад swift 4 - PullRequest
0 голосов
/ 08 января 2019

Я изменил кнопку «Назад» на панели навигации в одном из моих контроллеров представления на пользовательскую кнопку и дал этой кнопке действие, которое нужно выполнить при нажатии:

self.navigationItem.hidesBackButton = true
let backButton = UIBarButtonItem(image: UIImage(named: "backArrow"), style: .plain, target: self, action: #selector(self.back))
self.navigationItem.leftBarButtonItem = backButton

Это сработало отлично, и я смог удержать нажатой клавишу "назад", чтобы открыть контроллер вида, используя:

self.interactivePopGestureRecognizer?.isEnabled = true
self.interactivePopGestureRecognizer?.delegate = self

в моем файле контроллера навигации. К сожалению, когда я провожу назад, я не могу (или я не понял) вызвать функцию back() в моем контроллере вида, которая меняет кнопку возврата. Как и где я могу определить, что я провожу, чтобы вернуться назад, чтобы я мог вызвать функцию возврата в этом конкретном контроллере представления?

1 Ответ

0 голосов
/ 08 января 2019

Как и этот ответ, вы можете просто подписаться на жест: https://stackoverflow.com/a/36893464/1484378

// In UINavigationController

override func viewDidLoad() {
    super.viewDidLoad()
    self.interactivePopGestureRecognizer?.addTarget(self, action:#selector(self.handlePopGesture))
}

@objc func handlePopGesture(gesture: UIGestureRecognizer) -> Void {
    if gesture.state == .began {
        back()
    }
}

Вам, вероятно, придется добавить некоторую пользовательскую логику для доступа к методу back вашего контроллера вида, например: if let vc = visibleViewController as? MyViewController { vc.back() }

...