我有两个测试控制器:TestController1
和TestController2
。我试图通过将UIApplication.shared.window[0].rootViewController
更改为自我(TestController2
)来加载或显示第二个控制器时第一个控制器。但是没有任何事情发生,我在内存中也有两个控制器。所以,我的问题是:我如何deinit
所有ViewControllers并且只在内存中保留一个?
我的所有测试控制器都有deinit方法,并且我正在尝试在执行时打印“deinited”,所以我在这里提出的许多问题中没有任何断点问题。
这是我的TestController2
代码:
class TestController2: UIViewController {
deinit {
print("testController 2 deinited")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
//first attempt
let del = UIApplication.shared.delegate as! AppDelegate
del.window?.rootViewController = self
//second attempt
UIApplication.shared.windows[0].rootViewController = self
//third attempt
UIApplication.shared.keyWindow?.rootViewController = self
}
}
我的所有尝试都无效..
更新:第一个和第二个控制器只有一个按钮。没有任何业务逻辑。我在故事板上通过ctrl +拖动模式从控制器1的按钮到控制器2创建了一个segue。