2017-02-16 20 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。!将其标记为正确答案,以便面临相同问题的其他人可以修复它。 –