ios/swift中的根视图控制器会发生什么情况

ios/swift中的根视图控制器会发生什么情况,ios,swift,viewcontroller,Ios,Swift,Viewcontroller,假设我像这样手动切换ViewController 当另一个viewcontroller被带到前面时,(根)控制器会发生什么情况。我可以重新实例化它,还是应该在前面保留对它的引用?不,您不必重新实例化它。您可以像这样从UINavigationController访问所有当前的UIViewControllers self.navigationController?.viewControllers 这将返回一个[UIViewController]。如果要获取viewController,它位于in

假设我像这样手动切换ViewController


当另一个viewcontroller被带到前面时,(根)控制器会发生什么情况。我可以重新实例化它,还是应该在前面保留对它的引用?

不,您不必重新实例化它。您可以像这样从
UINavigationController
访问所有当前的
UIViewControllers

self.navigationController?.viewControllers
这将返回一个
[UIViewController]
。如果要获取viewController,它位于
index=0
。如果您想回到
根目录
,您可以拨打

self.navigationController?.popToRootViewControllerAnimated(true)

我会加上这个作为评论,只是我没有足够的观点。 要回答您的问题,您不必担心重新实例化以前的视图控制器。如果使用的是
presentViewController:animated:completion
方法,则可以使用UIViewController类中在转换后设置的
presentedViewController
presentingViewController
属性

下面的开发者链接将帮助您更好地决定如何处理视图控制器转换,具体取决于您的用例-


如何取消分配视图控制器?通过
解除ViewControlleranimated(…)
?在视图控制器重新实例化之前,这实际上会“破坏”视图控制器吗?
dismissViewControllerAnimated()
用于
presentViewControllerAnimated()
并且
popViewControllerAnimated
用于返回
UINavigationController
的视图控制器堆栈中的一个viewController。是的,这两种情况(dismise/pop)都会取消分配和销毁ViewController您假设他的UIViewController嵌入到导航控制器中,这并不总是正确的。我/希望/更愿意自己切换UIViewController,而不依赖于其他任何东西(我正在移植另一种语言的代码,其中转换堆栈/逻辑已经编码好了——因此我现在正试图以1:1的比例接近那里的代码)