我又遇到问题了。我使用 Swift 作为编程语言在 Xcode 6 中使用 Storyboard。在我想在启动我的应用程序时展示一个 View (带有 View Controller )之前,我想测试互联网连接和我的服务器连接。如果两个连接都可用,我想显示一个 View 1,如果不可用,我想显示一个 View 2。但我不想在检查连接时显示带有微调器的 View 。所以我想我可以通过 AppDelegate 类来管理它。在函数 func application() 中,我想决定首先加载哪个 View (view1 或 view2)。但是对于这个解决方案,我必须实例化两个 View Controller ,它们连接到 Storyboard中的两个 View 。我不知道这是否可能。
所以我的问题是,是否可以在我的 AppDelegate 类中实例化这两个特定的 Storyboard View Controller ?如果可能的话,我该如何通过代码做到这一点?
如果不可能,我该如何解决我的问题?目前,我总是显示一个带有微调器 (view0) 的 View Controller ,如果连接可用,我转到 view1,如果连接不可用,我从我的 view0 Controller 转到 view2,如下所示:
override func viewDidAppear(animated: Bool) { //一些代码 self.presentViewController(view1, animated: true, completion: nil) //一些其他代码 }
请您参考如下方法:
您可以使用此调用从 Storyboard 中加载特定的 View Controller :
let viewController = self.window?.rootViewController?.storyboard?.instantiateViewControllerWithIdentifier("SomethingViewController") as UIViewController
self.window?.rootViewController = viewController
但老实说,在您进行连接测试时让用户在没有任何信息的情况下等待似乎不太好。
最好在等待期间显示一个临时 View Controller ,除非那些测试真的很快:)
编辑:更正代码。
这是一个 hackish 解决方案,因为它会在初始化我想的原始 rootViewController 之后加载一个新的 rootViewController。但它应该有效。
更正确的替代方法是将项目创建为“空应用程序”并通过代码直接在您想要的 Controller 中加载 Storyboard。
