2016-01-13 106 views
1

我想在AppDelegate中設置初始ViewController。正如:Swift在AppDelegate中設置rootViewController延遲

if jsonResult["result"]!.intValue == 1 { 
    let entryPoint: UITabBarController = mainStoryboard.instantiateViewControllerWithIdentifier("TabBarController") as! UITabBarController 
    self.window?.rootViewController = entryPoint 
} else { 
    let entryPoint: WelcomeController = mainStoryboard.instantiateViewControllerWithIdentifier("WelcomeController") as! WelcomeController 
    self.window?.rootViewController = entryPoint 
} 

它的工作原理,但在第一次打開它,我設置爲我的故事板初期,只是後來它編程切換視圖控制器。

那麼,如何直接切換我的控制器而不顯示我的第一個控制器?我做錯了什麼?

+2

問題是(至少似乎是因爲我們沒有太多的細節),您正在等待JSON負載在加載UI之前被接收和解析。如果用戶沒有連接互聯網會怎麼樣?如果連接速度非常慢/點差怎麼辦? 我會花一些時間重新考慮應用程序的流程。這些視圖真的是用戶應該看到的第一個視圖嗎? – galois

回答

3

除了伽羅瓦的評論:

...如果有沒有結果,由於有錯誤已完成的請求,會發生什麼?用!強制展開結果會導致應用程序崩潰。您應該查看Grand Central Dispatch電話。開始一個異步調用,讓您的JSON在主線程上有一個回調,以在完成時更新您的UI,並讓您的UI直接加載到某個「等待」狀態,同時它將在後臺等待JSON。

+0

我做過'dispatch_async(dispatch_get_main_queue(),{() - > Void in'和裏面我加載JSON並且做我需要做的事,是的,它可以工作,但是部分。從故事板顯示初始視圖控制器半秒鐘,我想完全忽略它 –