2017-02-16 78 views
1

我正在做一個標籤式應用程序工作負載的多個ViewControllers。它有一個TabBarController和4個ViewControllers附加到它。斯威夫特3 - 在推出

默認情況下,在推出僅FirstViewController被加載。我想在開始之前通過標籤菜單切換到第二個視圖之前加載FirstViewControllerSecondViewController

是我的嘗試,到目前爲止,是我創建的自定義MyTabBarController類,並試圖用

var sv = SecondViewController() 
sv.loadView() 

ViewDidLoad(),但它加載過程中造成了致命的錯誤,因爲從故事板(我猜測)的MapView元素不加載。

什麼是同時加載的使用故事板元件兩條viewControllers正確的方法是什麼?到目前爲止,我所有其他的嘗試都沒有成功。

+0

您是否以編程方式創建您的UITabBarController?如果是這樣,你可以編程方式創建每個視圖控制器,並將它們分配給標籤欄控制器的'viewControllers'屬性。但這不是典型的設計模式。請問爲什麼你要這樣做?是否出於性能原因(預加載第二個控制器以避免延遲)? –

+0

嗯,如果我正確地得到您的問題 - 我創建TabBarController它在故事板,然後創建'MyTabBarController:UITabBarController'類,並指定以故事情節元素。我只是作爲一種可能的方式來一次加載2個視圖控制器,因爲我認爲它是必需的。我之所以需要他們在同一時間加載完全是爲了避免延遲 –

回答

1

添加在您的主視圖控制器

var secondViewController:UIViewController! 

並在您的viewDidLoad:

secondViewController: UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "yourIdentifier") as! SecondViewController 

就是這樣。當你想要展示它時,請使用:

self.present(secondViewController, animated: true, completion: nil) 
+0

謝謝,這似乎解決了這個問題! –

+0

沒問題@AliceA。!將其標記爲正確答案,以便面臨相同問題的其他人可以修復它。 –