处理AppDelegate类中storyboard的视图控制器

时间:2014-10-12 15:00:10

标签: ios uiviewcontroller swift storyboard appdelegate

我又遇到了问题。我使用Swift作为编程语言在Xcode 6中使用storyboard。在我想要在启动我的应用程序时呈现视图(使用视图控制器)之前,我想测试Internet连接和我的服务器连接。如果两个连接都可用,我想呈现一个view1,如果不是,我想呈现一个view2。但是我不想在检查连接时用旋转器显示视图。所以我想我可以通过AppDelegate类来管理它。在函数func application()中,我想首先决定加载哪个视图(view1或view2)。但是对于这个解决方案,我必须实例化两个视图控制器,它们连接到storyboard中的两个视图。我不知道是否有可能。

所以我的问题是,是否可以在我的AppDelegate类中实例化这两个特定的故事板视图控制器?如果有可能,我怎么能通过代码来做到这一点?

如果不可能,我该如何解决我的问题?目前我总是使用微调器(view0)显示一个视图控制器,如果连接可用,我会转到view1,如果连接不可用,我会从view0控制器转到view2,如下所示:

override func viewDidAppear(animated: Bool) { //some code self.presentViewController(view1, animated: true, completion: nil) //some other code }

1 个答案:

答案 0 :(得分:3)

您可以使用此调用从故事板加载特定的视图控制器:

let viewController = self.window?.rootViewController?.storyboard?.instantiateViewControllerWithIdentifier("SomethingViewController") as UIViewController
self.window?.rootViewController = viewController

但说实话,在进行连接测试时,让用户等待没有信息似乎并不好。

在等待期间显示临时视图控制器会更好,除非那些测试非常快:)


编辑:更正了代码。

这是一个hackish解决方案,因为它会在我初始化原始的rootViewController之后加载一个新的rootViewController。但它应该有用。

更正确的替代方案是将项目创建为“空应用程序”并通过代码直接在所需的控制器中加载故事板。