将上下文管理器添加到单个视图应用程序

时间:2014-10-06 20:18:54

标签: xcode uiviewcontroller swift ios8 appdelegate

当我在Xcode中创建单个视图应用程序时,它启动了一个使用viewDidLoad函数加载的ViewController类。

我做了一些研究,但似乎无法弄清楚如何更改此默认加载行为。

我想做的是: 首先打开一个名为ContextManager的类。 然后,这个上下文管理器会调用我想要的任何ViewController类。

我相信我需要在AppDelegate.swift中使用这个委托:

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.
        return true
    } 

我没有得到的是如何调用或打开初始的ViewController类,我没有看到委托调用它。

如果您可以建议我如何拦截此加载事件,而是让我的ContextManager成为第一个被称为赞赏的类。

谢谢

1 个答案:

答案 0 :(得分:2)

您必须手动创建主窗口和初始视图控制器,而不是让UIApplicationMain这样做。

首先,选择目标并清除主界面。这可以防止UIApplicationMain尝试设置窗口和初始视图控制器:

clearing out main interface

然后,在application:didFinishLaunchingWithOptions:中,手动创建窗口,并从故事板中加载您选择的视图控制器。例如,在这里我在视图控制器之间随机选择故事板ID为“1”和“2”:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    window = UIWindow(frame: UIScreen.mainScreen().bounds)
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let choice = "\(arc4random_uniform(2) + 1)"
    window?.rootViewController =
        storyboard.instantiateViewControllerWithIdentifier(choice) as? UIViewController
    window?.makeKeyAndVisible()
    return true
}