展开代表不会取消“中间”视图

时间:2016-06-27 09:58:54

标签: ios swift unwind-segue deinit

我有一个导航控制器(NC)和三个带有以下导航模式的ViewControllers(A,B,C):

NC->A->B->C

如果我从A到C并且'返回',则会调用B和C deinit方法。

如果我使用 Unwind Segue从C转到A,B deinit就不会被调用。

不清楚为什么 - 我的应用程序中有另一个类似的序列,无论“后退”还是“展开”操作,都会调用deinits。

知道什么可能导致B在放松操作后“活着”?

1 个答案:

答案 0 :(得分:1)

发现了这个问题。问题是我在viewDidLoad中的这一行:

definesPresentationContext = true

来自文档: 确定应为UIModalPresentationCurrentContext类型的演示文稿显示哪个父视图控制器的视图。如果没有祖先视图控制器设置了此标志,则演示者将成为根视图控制器。

结果,中间视图(即' B')成为根,除非它被后面的'解雇。操作

为避免搜索框在视图C上暂时可见,我在视图B 的prepareForSegue中添加了searchController.active = false 我从用户选择中获取所选值(点按行)。