如果从过流上下文视图控制器呈现,则呈现视图控制器错误
Posted
技术标签:
【中文标题】如果从过流上下文视图控制器呈现,则呈现视图控制器错误【英文标题】:Wrong presenting view controller if presented from an over-current-context view controller 【发布时间】:2017-05-08 17:17:00 【问题描述】:所以我有 3 个视图控制器的问题。我有视图控制器 A,它显示了一个视图控制器 B,其演示风格为 currentContext
。此视图控制器 B 以默认呈现样式呈现视图控制器 C。像这样的东西:
presents over current context presents regularly
VC A -------------------------------> VC B --------------------> VC C
问题是,当我想关闭视图控制器 C 时,presentingViewController
属性指向 VC A 而不是 VC B,而且,没有调用 VC B 的 viewWillAppear
,而 viewWillAppear
在 VC A 中。
我无法使用dismiss(animated flag: Bool,
completion: (() -> Void)? = nil)
的完成块,因为VC B无法控制VC C的解雇。它是一个可以从应用程序中的多个点开始的流程,所以导航的管理这个流程是在一个单独的类中完成的。
这里发生了什么?我真的需要调用VC B的viewWillAppear
。
【问题讨论】:
您愿意发布 3 个视图控制器的代码吗?没有它就很难为您提供帮助。 【参考方案1】:@Kinopio - 我猜你面临的问题是因为你正在从 VC A 中解散控制器,所以这里 self 指向当前类。您需要将消息传递给 VC B,然后从那里解雇。
喜欢
//code in VC A
func dismissViewControllerNoC()
viewControllerNoB.dismiss()
//code in VC B
func dismiss()
dismiss(animated flag: Bool,
completion: (() -> Void)? = nil)
【讨论】:
以上是关于如果从过流上下文视图控制器呈现,则呈现视图控制器错误的主要内容,如果未能解决你的问题,请参考以下文章
你如何在 UIKit 视图控制器和它呈现的 SwiftUI 视图之间共享数据模型?
如果当前视图控制器被呈现并推送,如何展开到正确的视图控制器?