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

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

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

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

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

除非你正在做一些非常专业的事情,否则你不需要在Swift中去除一个对象。 当引用计数变为0时,它将自动调用。如果您真的需要,您应该能够通过AppDelegate设置窗口的rootViewController

但是,请注意,很少需要这样的维护。

在取消分配类实例之前立即调用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 }