2015-10-19 29 views
1

我正在构建一个应用程序来呈现UIViewController并同时关闭当前的UIViewControllerPresent and dismiss last 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> whose view is not in the window hierarchy!

有没有一种方法可以做到这一点?

回答

0

如果你想更换一个UIViewController完全,你应该这样做:

UIApplication.sharedApplication().keyWindow?.rootViewController = newController 

不过,这不会交叉溶解。

如果需要过,你只需要提出新的视图控制器“在”旧人,或按照建议在这个岗位,重新写斯威夫特:

https://stackoverflow.com/a/8248284/233602

+0

我在哪里做?第二个呈现的控制器的viewDidLoad?所以通过应用你的代码它会从内存中关闭旧的视图控制器? –

+0

我建议你集中你的逻辑来呈现视图控制器 - 也许在你的应用程序委托中,或者更好的是,在专用的控制器类中,并将上面的代码放在那里。 –

+0

通过指向帖子的链接更新了答案,向您展示了如何进行动画制作。 –