3
我有些誤解。我目前正在使用Swift開發一款應用程序。爲了簡化多個開發人員的工作,該項目分爲多個故事板。當應用程序啓動時,我們使用應用程序委託來確定是否提供教程。無論選擇視圖請問presentViewController會導致內存耗盡?
,我們實例故事板,然後將初始視圖控制器像這樣:
// Show the Welcome Tutorial
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let initialStoryboard: UIStoryboard = UIStoryboard(name: "WelcomeTutorial", bundle: nil)
let initialViewController: TutorialVC = initialStoryboard.instantiateViewControllerWithIdentifier("TutorialVC") as! TutorialVC
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
然後,當我們要移動到一個不同的故事板,我們使用相同的代碼,但代替最後兩行與presentViewController。不過,據我瞭解,這是建立一個堆棧。我們永遠不會調用dismissViewController或返回到前一個視圖控制器,因此它可以被解僱。有沒有更好的方法來做到這一點,而不創建一個堆棧?我擔心堆棧正在浪費內存。我可能會讓segues與故事板引用一起工作,但我不知道這是否會造成同樣的問題。
當你說你「使用相同的代碼」,你是否重新創建窗口,或者你是簡單地通過*教程提供主視圖控制器?如果後者,爲什麼不簡單地彈出當前(教程),然後呈現主? –
我們得到另一個故事板(第2行),然後從該故事板獲取一個視圖控制器(第3行)。然後我們使用presentViewController來呈現新的。現在你說我感覺非常愚蠢。如果我不想構建一堆控制器,我可以調用dismissViewController,然後立即調用presentView來顯示新控件?我一直認爲這會在新的一個呈現時短暫顯示一個空白屏幕。 –
它可能會顯示一個白色的屏幕 - 你可能會想測試它,看看會發生什麼。或者提供一個空白/單視圖控制器*首先*包含背景顏色或圖像,並始終將其保存在堆棧的底部,將教程/主控制器*交換到最上面*。 –