所以我遇到了3个视图控制器的问题。我有View Controller A,它提供了一个视图控制器B,其演示风格为currentContext
。此视图控制器B呈现具有默认演示样式的视图控制器C.像这样的东西:
presents over current context presents regularly
VC A -------------------------------> VC B --------------------> VC C
问题是,当我想关闭View Controller C时,presentingViewController
属性指向VC A而不是VC B,而且,VC B的viewWillAppear
未被调用,而VC A中的viewWillAppear
是。
我无法使用dismiss(animated flag: Bool,
completion: (() -> Void)? = nil)
的完成块,因为VC B无法控制解雇VC C.这是一个可以从应用程序中的几个点开始的流程,因此管理这个流程的导航是在一个单独的类中完成的。
这里发生了什么?我真的需要调用VC的viewWillAppear
。
答案 0 :(得分:0)
@Kinopio - 我猜你遇到的问题是因为你正在从VC A中解雇控制器,所以这里自我指向当前的类。您需要将消息传递给VC B并从那里解除。
像
//code in VC A
func dismissViewControllerNoC(){
viewControllerNoB.dismiss()
}
//code in VC B
func dismiss(){
dismiss(animated flag: Bool,
completion: (() -> Void)? = nil)
}