Ios 显示并关闭最后一个UIViewController

Ios 显示并关闭最后一个UIViewController,ios,swift,Ios,Swift,我正在构建一个应用程序来显示UIViewController,同时关闭当前的UIViewController 目前我在viewcontroller1中,我想将viewcontroller2显示为主控制器,并关闭viewcontroller1以将其从内存中删除,因此viewcontroller2将是显示后的主控制器,堆栈中没有viewcontroller1 我试过: let controller = storyboard?.instantiateViewControllerWithIdentifi

我正在构建一个应用程序来显示
UIViewController
,同时关闭当前的
UIViewController

目前我在
viewcontroller1
中,我想将
viewcontroller2
显示为主控制器,并关闭
viewcontroller1
以将其从内存中删除,因此
viewcontroller2
将是显示后的主控制器,堆栈中没有
viewcontroller1

我试过:

let controller = storyboard?.instantiateViewControllerWithIdentifier("controller2") as! viewcontroller2
controller.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve

self.dismissViewControllerAnimated(false) { () -> Void in

    self.presentViewController(controller, animated: false, completion: nil)

}
但它给了我:
0x7fee28711900>,它的视图不在窗口层次结构中


有办法吗?

如果您想完全更换
UIViewController
,您应该这样做:

 UIApplication.sharedApplication().keyWindow?.rootViewController = newController
然而,这不会交叉溶解

如果您需要交叉,您只需在旧视图控制器的“上方”显示新视图控制器,或者按照本文中的建议重新编写:


如果要完全更换
UIViewController
,应执行以下操作:

 UIApplication.sharedApplication().keyWindow?.rootViewController = newController
然而,这不会交叉溶解

如果您需要交叉,您只需在旧视图控制器的“上方”显示新视图控制器,或者按照本文中的建议重新编写:


我在哪里可以这样做?在viewDidLoad中显示第二个控制器?因此,通过应用您的代码,它将从内存中删除旧的视图控制器?我建议您集中显示视图控制器的逻辑-可能在您的应用程序委托中,或者更好,在专用的控制器类中,并将上述代码放在其中。更新了答案,并链接到一篇文章,向您展示如何制作动画。我在哪里可以这样做?在viewDidLoad中显示第二个控制器?因此,通过应用您的代码,它将从内存中删除旧的视图控制器?我建议您集中显示视图控制器的逻辑-可能在您的应用程序委托中,或者更好,在专用的控制器类中,并将上述代码放在其中。更新了答案,并提供了一个链接,指向如何设置动画的帖子。