如何在NavigationController的下一个viewController中按下后退按钮

问题描述 投票:-2回答:3

我想检测是否在navigationController的下一个viewController中按下了后退按钮。假设我在navigationController中有VC​​_A和VC_B viewControllers。我知道如何检测当前视图控制器中是否按下了后退按钮,但我不知道如何在先前的viewController中检测到它。

编辑:

我从VC_A转到VC_B,当我按下VC_B中的后退按钮时,我想在VC_A中调用一个函数。

ios swift uinavigationcontroller
3个回答
1
投票

您可以使用通知中心。该链接有一个不错的教程:https://learnappmaking.com/notification-center-how-to-swift/


0
投票

如果我理解正确,当您按下当前视图控制器上导航栏中的后退按钮,并且用户正在从当前B视图控制器返回到A视图控制器时,您想做些什么。

在用户按下后退按钮时,在您要跟踪的视图控制器中放置此代码行。

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    if isMovingToParent {
        //your code when back button is pressed
    }
}

0
投票

我想检测是否在NavigationController的下一个viewController中按下了后退按钮。

我不确定我是否完全理解这一点,但实际上并没有多大关系:本质上,您是在谈论某种视图控制器(称为controllerA),其视图当前不可见,可以发现有关影响某些other视图控制器(controllerB)的更改。需要这种东西的通常原因是controllerA可以更新它管理的某些数据。

一种更好的处理方法是让两个控制器共享一个公共数据模型。诸如视图控制器被关闭之类的事情所影响的任何应用程序状态都是共享数据,应作为数据模型的一部分。 controllerA确实不应该在乎是否点击了controllerB的后退按钮...该事件是[[only controllerB的业务(可以说是管理它的导航控制器)。controllerA应该关心的是根据屏幕外发生的任何更改更新其自己的视图,这些更改应由controllerB和任何其他可能处于活动状态的视图控制器记录在模型中一路走来。

© www.soinside.com 2019 - 2024. All rights reserved.