在目标视图控制器 viewWillAppear 中检测向后/弹出导航 [重复]

Posted

技术标签:

【中文标题】在目标视图控制器 viewWillAppear 中检测向后/弹出导航 [重复]【英文标题】:Detect backward/pop navigation in destination view controller viewWillAppear [duplicate] 【发布时间】:2017-11-07 12:15:48 【问题描述】:

有许多众所周知的解决方案可以检测视图控制器在向后导航过程中何时从屏幕上消失,由UINavigationController 管理(即当视图控制器被弹出时)导航堆栈)。换句话说,在源视图控制器中检测向后导航。

相比之下,我需要在viewWillAppear 中为destination 视图控制器检测向后导航。或者换一种说法,检测视图控制器何时由于UINavigationController 弹出而显示。

实现这一目标的最简洁/最简单的方法是什么?实现UINavigationControllerDelegate 并设置标志可能是一种方法,但如果可能的话,宁愿避免可变状态。

我没有使用 Storyboard 来管理这两个屏幕之间的过渡。

【问题讨论】:

viewWillAppear: 中检测这些属性isMovingToParentViewControllerisMovingFromParentViewController 可能会有所帮助。 谢谢 - 我可以在 viewWillAppear 中确认这是否有效:if !isMovingToParentViewController print("backwards") 如果您再次发布作为答案,我将标记为已接受。 【参考方案1】:

检查 UIViewController 的这个属性:P

isMovingToParentViewController

isMovingFromParentViewController

【讨论】:

以上是关于在目标视图控制器 viewWillAppear 中检测向后/弹出导航 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI |如何覆盖 viewWillAppear 等生命周期方法

ViewWillAppear 被调用两次

当应用程序处于活动状态时,不会在我的视图控制器中调用 viewWillAppear

用于构建视图层次结构的 viewWillAppear 与 loadView

当 presentViewController 没有导航视图控制器时,viewWillAppear 方向不正确

Swift:强制在模态中显示导航栏