2012-10-01 32 views
0

我新的目標C所以請原諒我,如果這是一個愚蠢的問題(我已搜查!)無法UIViewControllers之間切換使用故事板

我使用Xcode中的故事板(4.4.1)和我有2個UIViewControllers 我想他們之間的編程開關(不知道這是正確的術語?)

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
    UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"BookingView"]; 
    [self presentModalViewController:vc animated:YES]; 

上面的代碼完美的作品後來在我的項目,但我當我嘗試打電話,如果在if ()在我的viewdidload方法在第一個UIViewController它不起作用。請幫助!

回答

1

你不應該執行在viewDidLoad中這樣的任務:方法。 您試圖以模態方式呈現視圖控制器,它只在內存中分配並加載,但尚未顯示。這意味着您的演示文稿將無法使用。您應該將代碼移到viewDidAppear:

我建議你閱讀本指南,瞭解視圖控制器代表團的基本知識:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html%23//apple_ref/doc/uid/TP40007457

+0

謝謝亞歷克斯,我認爲它可能是這樣的,因爲它在IBAction中工作,但不在viewDidLoad中。我應該從viewDidLoad還是從viewDidAppear方法調用另一個(自定義)方法?謝謝! –

+0

別管我最後的評論,在viewDidAppear中工作。謝謝! –

+0

嗯,我想你正在做的是檢查一個條件,並根據結果,你呈現或不是一個視圖控制器在另一個頂部的模態。真的沒有什麼區別,並且爲了清晰起見,調用另一種不同的方法會更加出色。 – ale0xB

0

爲什麼不是self.storyboard而不是[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

假設所有的視圖控制器是來自同一個故事板:)

+0

屬實,這有一定道理,但它仍然無法正常工作... –