2013-09-26 130 views
8

我有一個視圖控制器我放在主故事板,但當我嘗試初始化並加載視圖控制器時,我的應用程序崩潰。我使用的xcode版本並沒有真正告訴我我得到的錯誤,但我確實看到它給了我一個sigabrt信號。我不知道它爲什麼不起作用。試圖從故事板初始化視圖控制器

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil]; 
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SelectDateViewController"]; 
    [vc setModalPresentationStyle:UIModalPresentationFullScreen]; 

    [self presentModalViewController:vc animated:YES]; 

這就是我所說的。我用的所有名字都是正確的,但我仍然不明白爲什麼它會崩潰。

+0

當您創建的應用程序,你讓故事板開始? – erdekhayser

+0

@foriinrangeawesome是的,我做到了。 –

回答

0

[self presentModalViewController:vc animated:YES];已棄用。

嘗試: [self presentViewController:vc animated:YES completion:nil];

+0

這可能是原因。我想知道爲什麼它不會給他警告。 – erdekhayser

6

在最後一行設置一個斷點來驗證VC(以及故事板)不爲零。

如果其viewController參數爲零,presentModalViewController將會崩潰。

如果兩者均爲零,那麼您的故事板名稱可能不正確(不太可能)。

如果只是vc是零,那麼標識符是不正確的(在代碼或故事板中)。確保VC的Storyboard ID(如屏幕截圖所示)與您的描述相匹配。習慣上不要爲此選擇類名(因爲在故事板中可能有多個給定類的實例)。

故事板ID區分大小寫,並且必須是唯一的。我發現確定的方法來設置它是在選擇視圖控制器並按回車結束編輯(不要單擊字段)後在該字段中輸入名稱。我注意到當從Xcode 4轉換到5時,故事板中發生了一些損壞,反之亦然,因此潛入plist/xml也可能有所幫助。

Storyboard ID

編輯: 此外,當這個叫的時機很重要,看 presentModalViewController not working。 確保已經顯示接收消息的視圖控制器(即在viewDidAppear中調用,而不是viewDidLoad)。

正如阿卜杜拉提到的,你應該有可能移出過時的方法:

[self presentViewController:vc animated:YES completion:nil]; 

在這種情況下,完成塊可以是零沒有問題,但VC不能是。

0

您是否從Storyboard設置了初始ViewController? 如果是,請確保您的Storyboard ID相同。 如果您使用的故事板,你可以直接存在或解聘的viewController沒有必要爲它編寫

希望代碼這個幫助你:)

相關問題