我有一个导航控制器(NC)和三个带有以下导航模式的ViewControllers(A,B,C):
NC->A->B->C
如果我从A到C并且'返回',则会调用B和C deinit方法。
如果我使用 Unwind Segue从C转到A,B deinit就不会被调用。
不清楚为什么 - 我的应用程序中有另一个类似的序列,无论“后退”还是“展开”操作,都会调用deinits。
知道什么可能导致B在放松操作后“活着”?
答案 0 :(得分:1)
发现了这个问题。问题是我在viewDidLoad中的这一行:
definesPresentationContext = true
来自文档: 确定应为UIModalPresentationCurrentContext类型的演示文稿显示哪个父视图控制器的视图。如果没有祖先视图控制器设置了此标志,则演示者将成为根视图控制器。
结果,中间视图(即' B')成为根,除非它被后面的'解雇。操作
为避免搜索框在视图C上暂时可见,我在视图B 的prepareForSegue中添加了searchController.active = false
我从用户选择中获取所选值(点按行)。