当我的应用程序启动时,我有一个加载视图控制器(是我的初始视图控制器)。当此视图控制器中的动画完成时,我希望它显示另一个视图控制器并使用动画关闭视图控制器。
加载视图控制器是初始视图控制器,
我在UIStoryboard.mflMainTabBarViewController()时有这段代码。返回我想要呈现的视图控制器
func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {
let animationID = anim.value(forKey: "animationID")
if animationID as! NSString == "transform" {
self.present(UIStoryboard.mflMainTabBarViewController(), animated: true, completion: {
_ = self.popoverPresentationController
})
}
}
但是当deinit从未被召唤时
deinit {
print("deinit")
} 取消第一个视图控制器,并使呈现视图控制器成为根视图控制器的最佳方法是什么?
答案 0 :(得分:0)
除非你做一些非常专业的事情,否则你不需要在Swift中取消初始化对象。当引用计数变为0时,它将自动调用。如果确实需要,您应该可以通过rootViewController
设置窗口AppDelegate
。
但请注意,很少需要这样的维护。
答案 1 :(得分:0)
在取消分配类实例之前立即调用deinitializer
后可以使用
if let delegate = UIApplication.shared.delegate as? AppDelegate {
let storyboard : UIStoryboard? = UIStoryboard(name: "storyboardName", bundle: nil)
let rootController = storyboard!.instantiateViewController(withIdentifier: "controllerIdentifier")
delegate.window?.rootViewController = rootController
}