2013-01-22 59 views
6

嗨,我有一個ViewController在按鈕上執行一個segue。performSegueWithIdentifier技巧,以避免最初的延遲

- (IBAction)moveToCoolViewButtonTapped { 
    [self performSegueWithIdentifier:@"toCoolView" sender:nil]; 
} 

這工作正常,除了第一次執行它的煩人的延遲,我猜是由於視圖尚未初始化。我顯然不想過早地創造很多意見。 (從同一個viewController計劃的其他幾個賽段)。所以,也許是一個長鏡頭:但我想知道是否有人有任何出色的靈感,以避免最初的滯後?

回答

1
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
toCoolView *yourViewController = (toCoolView *)[storyboard instantiateViewControllerWithIdentifier:@"toCoolView"]; 
[self.navigationController pushViewController:yourViewController animated:YES]; 

嘗試交配

+1

由於更換此

[self performSegueWithIdentifier:@"toCoolView" sender:nil]; 

,但沒了。完全相同的結果,這是有道理的,因爲它基本上做着完全相同的事情(啓動然後顯示)。 –

0

嘿,我有同樣的問題。遇到您的帖子尋找解決方案。我想我終於找到了問題。

問題不在於執行SegueWithIdentifier,而是它在目標控制器中(無論「toCoolView」在哪裏)。檢查它的viewDidLoad,看看是否有什麼可能需要額外的時間加載。在我的情況下,我分配和初始化UIImagepickerController這是造成延遲,所以我從那裏刪除它,並將其放置在ViewDidAppear中。

只是嘗試註釋你的目標控制器的viewDidLoad中的每一件事,看看它是否加快了seque。

希望它有助於

2

嘗試用這種

dispatch_async(dispatch_get_main_queue(),^{ 
    [self performSegueWithIdentifier:@"toCoolView" sender:nil]; 
});