2014-12-22 56 views
2

我有一個視圖控制器,它是從選定表格行時執行的一個segue加載的。此視圖控制器嵌入在導航控制器(&標籤欄控制器)中。UIViewController緩慢加載,直到觸及

我準備通過設置一個新的導航控制器並獲取它的子視圖控制器,然後將變量傳遞給特定的孩子。

當我選擇一行時,應用程序會掛起(大約4-5秒),有時它會立即熄滅。我注意到,如果我觸摸屏幕,將會立即加載下一個視圖。

我被抓到了什麼?

編輯程式碼:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    selectedId = myArray.objectAtIndex(indexPath.row).valueForKey("myId") as Int 
    performSegueWithIdentifier("goToExtraDetails", sender: self) 

} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if segue.identifier == "goToExtraDetails" { 

     let nextNavVc = segue.destinationViewController as ExtraMenuNavigationViewController 

     let nextChildVc = nextNavVc.childViewControllers[0] as ExtraMenuViewController 

     nextChildVc.thisId = selectedId 

    } 
} 
+1

你能添加一些代碼的延遲? – suhit

+0

根據請求添加了代碼 –

+0

它似乎當我刪除了segue.identifier中的代碼時,視圖加載得很好而且很快。 –

回答

2

我是能夠消除把if語句調度裏面主線程

dispatch_async(dispatch_get_main_queue(), { 
    if segue.identifier == "goToExtraDetails" { 

     let nextNavVc = segue.destinationViewController as ExtraMenuNavigationViewController 

     let nextChildVc = nextNavVc.childViewControllers[0] as ExtraMenuViewController 

     nextChildVc.thisId = selectedId 

    } 
}) 
+1

我有同樣的問題,但這不適用於我的應用程序。 –