在AppDelegate中的didFinishLaunchingWithOptions之前初始化控制器负载

时间:2016-06-29 05:30:05

标签: ios objective-c swift appdelegate

我需要以编程方式从didFinishLaunchingWithOptions加载控制器,但不幸的是首先初始化控制器加载而不是didFinishLaunchingWithOptions方法,所以有没有办法首先从didFinishLaunchingWithOptions方法加载控制器。   我的代码在这里

        if UserModel.getUserSessionKey() != ""{
        let dict = [
            "access_token": UserModel.getUserToken()]
        print("dictionay",dict)
        let header = [
            "sessionkey":UserModel.getUserSessionKey()]
        ServiceWrapper.myRetailers(header,requestObject: dict) { (success, response) -> Void in
            if (success) {
                // Alert.showAlert("Alert", message: "Success")
                self.isLogIn = true
                self.createMenuView();

            }
            else{

              // Alert.showAlert("Alert", message: "Failed")

                MyRetailersViewController.deleteRetailers()
                let featured = FeaturedController()
                featured.deleteData()
                let defaults  = NSUserDefaults.standardUserDefaults()
                defaults.removeObjectForKey("isSaved")
                defaults.removeObjectForKey("update")
                CoreDataHelper.deleteData("OfferDetail")
                self.isLogIn = false
                self.createMenuView();

            }
        }

    }

1 个答案:

答案 0 :(得分:0)

我想说这不是一个合适的解决方案,但为你工作。

在必须根据响应设置根视图控制器时,在didFinishLaunchingWithOptions中认真调用API并不是一个好主意。

1)创建新的视图控制器(NewviewViewController)。

2)将其设置为根视图控制器。

3)使用NewviewViewController viewWillaAppear方法调用您的服务(在此处开始加载指标)

4)根据响应启动你的控制器。

其他解决方案

1)从storyboard中删除初始控制器,然后根据响应调用您的API set Root视图控制器。

在这种情况下,您将获得一个黑色窗口,直到API无法成功调用。

请注意,如果用户没有任何互联网连接,会发生什么。在第二种情况下,您的应用程序打开时,空白窗口不是下一个屏幕。