2015-12-23 42 views
2

我想解僱一個視圖控制器,並在同一時間提出另一個。當Level1Controller()完成並調用self.dismissViewController()時,我希望它將我帶到名爲EndScene()的不同視圖控制器。Swift:dismissViewController和實例化另一個ViewController

這是最接近我的代碼。

self.dismissViewControllerAnimated(true, completion: {() -> Void in 
     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let nextViewConroller = storyboard.instantiateViewControllerWithIdentifier("endscene") 
     self.presentViewController(nextViewConroller, animated: false, completion: nil) 
    }) 
+0

您遇到@Rogue Studios的實際問題是什麼? –

+0

@RaphaelOliveira它只會啓動我回到根視圖控制器,這是錯誤信息'2015-12-23 17:47:35.333 Spin Game [6466:2789372]警告:嘗試呈現 on 其視圖不在窗口層次結構中!' –

+0

明白了,會寫出答案。 –

回答

2

而是呼籲0​​dismissViewControllerAnimated的,稱呼它呈現它的視圖控制器。然後在完成塊中,您可以按照您所做的相同方式顯示EndScene。發生此錯誤是因爲實際上,由於您從窗口中刪除了Level1Controller,因此使用它來呈現另一個視圖控制器是沒有意義的。

窗口 - > ParentViewController(調用這裏忽略的) - > Level1Controller

窗口 - > ParentViewController(在完成本EndScene) - > EndScene

你可能要通知Level1Controller家長對取消行動已經完成,你可以通過委託來完成。另一種選擇(我沒有測試它)是保持解僱Level1Controller和從presentingViewController目前。

self.presentingViewController.presentViewController... 

不知道但如果presentingViewController將是零,當完成塊被調用。

+0

謝謝,我會盡快嘗試。我讓你知道它是怎麼回事。 –

+0

嗨,流氓,我很高興你解決了你的問題。你最終選擇了哪種解決方案? –