【发布时间】:2019-10-27 07:04:01
【问题描述】:
在我的应用程序中,我有一个 UINavigationController,它在我的所有 ViewController 上放置了一个导航栏,并且在每个 ViewController 中我都有一个自定义的后退按钮。在一个特定的 ViewController 中,我需要在返回前一个 ViewController 时发送一些数据。当用户使用自定义功能按下后退按钮时,我能够做到这一点,但是当用户滑动返回时,此功能会被忽略。
我尝试使用这个答案:Adding an action to back swipes swift 4,但在导航控制器中调用 visibleViewController 或 topViewController 只会获得我们要访问的视图控制器(之前的 ViewController,而不是当前的)。在用户向后滑动之前,我需要我们所在的 ViewController 中的函数。
如何调用我在当前 ViewController 中创建的 back 函数,将数据从该 ViewController 发送到我们将弹出的 ViewController。
【问题讨论】:
-
您检查过
UINavigationControllerDelegate方法吗?我不确定它是否有此用途。 -
为什么不在视图控制器类中使用
viewDidDisappear? -
也许在你的第二个视图控制器中创建一个 weak var optional 来存储对前一个视图控制器的引用,然后在第二个视图控制器并在该函数中传递数据。
-
或者只是在
viewWillDisappear(_:)方法中使用你的返回函数。 -
哇,
viewWillDisappear(_:)工作了!不敢相信我没想到。谢谢!
标签: ios swift uinavigationcontroller back