deinit初始视图控制器的最佳方法是什么?

时间:2017-08-09 21:46:29

标签: ios swift xcode ios10

当我的应用程序启动时,我有一个加载视图控制器(是我的初始视图控制器)。当此视图控制器中的动画完成时,我希望它显示另一个视图控制器并使用动画关闭视图控制器。

加载视图控制器是初始视图控制器,

我在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")

} 取消第一个视图控制器,并使呈现视图控制器成为根视图控制器的最佳方法是什么?

2 个答案:

答案 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
    }