我正在构建一个应用来展示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> whose view is not in the window hierarchy!
有没有办法做到这一点?
答案 0 :(得分:0)
如果你想完全替换UIViewController
,你应该这样做:
UIApplication.sharedApplication().keyWindow?.rootViewController = newController
然而,这不会交叉溶解。
如果需要进行交叉,您只需要提供新的视图控制器" over"旧的,或按照这篇文章中的建议重新编写Swift: