【发布时间】:2017-03-28 11:43:17
【问题描述】:
我知道通常情况下,当 UIViewController A 呈现另一个 UIViewController B 时,A 的 presentedViewController 属性设置为 B。所以A 保留在内存中。
简单地说,我想通过A 展示B,然后清理A,因为它永远不会被退回。
为了更完整的解释和理由,在我的应用程序中,我有一个 UINavigationController,它可能在层次结构中有一堆屏幕。在某些时候(例如用户注销),我想通过调用self.present(loginViewController, animated: true, completion: nil) 来呈现一个新的视图控制器(登录)。但是,应用程序不可能通过从登录控制器调用“dismiss”返回 UINavigationController。如果执行登录,登录视图控制器将“呈现”一个新的 UINavigationController。
我希望清理原始 UINavigationController 及其所有层次结构,因为层次结构中可能有许多屏幕似乎永远不会再次使用。
(另外,在这种情况下,当用户启动应用程序时,他们是“自动登录”的,所以 UINavigationController 是根控制器。因此,当注销时,它不能“关闭”自己到返回登录屏幕。)
谢谢!
【问题讨论】:
标签: ios swift uiviewcontroller uinavigationcontroller