2016-06-29 6 views
1

didFinishLaunchingWithOptionsからコントローラーをプログラムでロードする必要がありますが、残念ながらコントローラーの負荷を初期化し、didFinishLaunchingWithOptionsメソッドよりも初期化します。 私のコードはここで私はこれではない適切な解決策を言いたいと、しかし、あなたのために働くだろうは、AppDelegateの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(); 

      } 
     } 

    } 
+0

あなたのdidFinishLaunchingwithOptionメソッドは前に呼び出されていますが、Webサービスの応答に時間がかかります。あなたの最初のビューコントローラはストーリーボードから設定されています。それは – iMHitesh

+0

です。あなたは正しいと思いますが、解決方法は何ですか?私はサービスの応答に関してviewControllerを表示する必要があります –

+0

私はあなたの興味があるかもしれない私の答えを投稿している – iMHitesh

答えて

0

です。

didFinishLaunchingWithOptionsのSeriously Call APIは、応答に応じてルートビューコントローラを設定する必要がある場合はお勧めできません。

1)新しいView Controller(NewviewViewController)を作成します。

2)ルートビューコントローラに設定します。

3)は、応答によるとNewviewViewController viewWillaAppear方法(ここではインジケータのロードを開始)

4)にあなたのサービスを呼び出して、あなたのコントローラーを開始します。

その他のソリューション

1)、応答に応じてあなたのAPIセットのルートビューコントローラを呼ぶストーリーボードから最初のコントローラを削除します。

この場合、APIが正常に呼び出されなくなるまでブラックウィンドウが表示されます。

ユーザーがインターネットに接続していない場合にどうなるか注意してください。 2番目のケースでは、アプリケーションは次の画面ではなく空白のウィンドウで開きます。

関連する問題