Swift 3 - 在启动时加载多个 ViewController

Posted

技术标签:

【中文标题】Swift 3 - 在启动时加载多个 ViewController【英文标题】:Swift 3 - loading multiple ViewControllers at launch 【发布时间】:2017-02-16 17:34:16 【问题描述】:

我正在制作一个选项卡式应用程序。它附有一个 TabBarController 和 4 个 ViewController。

默认情况下,启动时仅加载 FirstViewController。我想在开始时同时加载FirstViewControllerSecondViewController,然后通过选项卡菜单切换到第二个视图。

到目前为止,我尝试的是创建自定义 MyTabBarController 类并尝试使用

var sv = SecondViewController()
sv.loadView()

ViewDidLoad() 中,但它在加载过程中导致了致命错误,因为(我的猜测)情节提要中的 mapView 元素没有加载。

同时加载两个使用情节提要元素的视图控制器的正确方法是什么?到目前为止,我所有的其他尝试都没有成功。

【问题讨论】:

您是否正在以编程方式创建您的 UITabBarController?如果是这样,您可以以编程方式创建每个视图控制器并将它们分配给标签栏控制器的viewControllers 属性。但这不是典型的设计模式。我可以问一下你为什么要这样做吗?是否出于性能原因(预加载第二个控制器以避免延迟)? 嗯,如果我没看错你的问题 - 我在情节提要中创建了 TabBarController,然后创建了 MyTabBarController: UITabBarController 类并将其分配给情节提要元素。我这样做只是为了一次加载 2 个视图控制器,因为我认为这是必需的。我需要同时加载它们的原因正是为了避免延迟 【参考方案1】:

在你的主视图控制器中添加

var secondViewController:UIViewController!

在你看来DidLoad:

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

就是这样。当你想展示它时,使用:

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

【讨论】:

没问题@AliceA。!将其标记为正确答案,以便其他面临相同问题的人可以解决它。

以上是关于Swift 3 - 在启动时加载多个 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

ViewController 关闭 swift ios

Swift 3 / Alamofire 4:在 TableView 上使用 ID 获取数据

如何在 swift 中使用多个部分的骨架加载?

在启动时加载并呈现第二个视图控制器

麻烦出队 uicollectionview 单元格(swift 3)

swift - 如何在应用程序运行时顺利加载谷歌地图视图