我又遇到了问题。我使用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
}
答案 0 :(得分:3)
您可以使用此调用从故事板加载特定的视图控制器:
let viewController = self.window?.rootViewController?.storyboard?.instantiateViewControllerWithIdentifier("SomethingViewController") as UIViewController
self.window?.rootViewController = viewController
但说实话,在进行连接测试时,让用户等待没有信息似乎并不好。
在等待期间显示临时视图控制器会更好,除非那些测试非常快:)
编辑:更正了代码。
这是一个hackish解决方案,因为它会在我初始化原始的rootViewController之后加载一个新的rootViewController。但它应该有用。
更正确的替代方案是将项目创建为“空应用程序”并通过代码直接在所需的控制器中加载故事板。