В моем приложении у меня есть UINavigationController, который помещает панель навигации на все мои ViewController, и в каждом ViewController у меня есть настраиваемая кнопка «Назад». В одном конкретном ViewController мне нужно отправить некоторые данные при возврате к предыдущему ViewController. Я смог сделать это, когда пользователь нажимает кнопку «Назад» с пользовательской функцией, но эта функция игнорируется, когда пользователь проводит пальцем, чтобы вернуться.
Я пытался использовать этот ответ: Добавление действия для свайпов назад Swift 4, но вызов visibleViewController или topViewController в контроллере навигации получает только тот контроллер представления, к которому мы собираемся (предыдущий ViewController, а не текущий). Мне нужна функция внутри ViewController, в которой мы находимся, до того, как пользователь проведет пальцем назад.
Как я могу вызвать функцию back, которую я создал внутри моего текущего ViewController, чтобы отправить данные из этого ViewController в ViewController, к которому мы будем возвращаться.
Почему бы не использовать viewDidDisappear в классе контроллера представления?
Возможно, создайте слабый var необязательный во втором контроллере представления, в котором хранится ссылка на предыдущий контроллер представления, затем переопределите метод viewWillDisappear(_:) во втором контроллере представления и в этой функции передайте данные.
Или просто используйте функцию возврата внутри метода viewWillDisappear(_:).
Ничего себе viewWillDisappear(_:) сработало! Не могу поверить, что я не подумал об этом. Спасибо!





Похоже, вам просто нужно использовать viewWillDisappear(_:) и просто поместить функцию, которую вы сделали здесь.
Вы проверили
UINavigationControllerDelegateметоды? Я не уверен, есть ли что-то для этого.