2014-02-27 122 views
0

我初始化視圖控制器和推動它像這樣推手動初始化視圖控制器凍結應用

MyViewController *vc = [[MyViewController alloc] init]; 
[self.navigationController pushViewController:vc animated:YES] 

然而,該應用基本上推後凍結。如果我不推送,它不會轉換到新視圖,但我可以繼續使用該應用程序(它不會凍結)。另外,如果我將視圖控制器添加到MyViewController類的故事板並給它一個故事板ID,我可以初始化視圖控制器,並使用故事板instantiateViewControllerWithIdentifier方法將它推得很好。

有人知道爲什麼會發生這種情況嗎?

編輯

使用Zaph在他的評論中推薦的技術,我可以看到,該代碼被套牢了個遍迭代新的視圖控制器的viewWillLayoutSubviews方法。不知道爲什麼會這樣。

+1

點擊Xcode中的break按鈕,看看你在哪裏,看看棧跟蹤。多次做。 – zaph

+0

這個中斷按鈕在哪裏?暫停按鈕? –

+0

它停留在新視圖控制器的'viewWillLayoutSubviews'方法中,每當我暫停它時就停留在那裏。 –

回答

1

您不會對視圖控制器使用alloc/init。您需要從故事板或XIB文件加載它。如果你從故事板加載它,你會使用instantiateViewController:withIdentifier。如果你從XIB加載它,你想要使用initWithNibName:bundle:

+0

所以這意味着即使我不希望使用界面生成器的任何好處,我仍然必須拖出一個視圖控制器,並給它一個故事板ID並實例化它?我從來沒有使用xib文件,我不認爲...... –

+0

我在閱讀[Apple文檔]後嘗試了我的問題中的方法(https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/UsingViewControllersinYourApplication /UsingViewControllersinYourApplication.html),標題爲「實例化非故事板視圖控制器」的部分 –

+0

噢,我的天啊,我剛用XIB創建了一個視圖控制器類,不敢相信我從未見過這個.. –

-1

如果您正在運行Xcode 5(Xcode 4上的COMMAND + 6),嘗試並命中COMMAND + 7以顯示所有斷點。然後刪除所有斷點,因爲它聽起來像你在一個斷點處被凍結。

希望這會有所幫助!

+0

沒有中斷點,就像我說的如果我註釋掉第二行,一切正常(除非它不轉換)。我明白這不是確定的,沒有任何斷點,但相信我,沒有。 –

相關問題