2011-03-28 167 views
11

這與其他類似問題的情況並非如此。'NSInternalInconsistencyException',原因:' - [UIViewController _loadViewFromNibNamed:bundle:]加載了GameView筆尖,但未設置視圖插座

*終止應用程序由於未捕獲的異常 'NSInternalInconsistencyException',原因: ' - [UIViewController中_loadViewFromNibNamed:束:]加載GameView筆尖,但沒有設置視圖出口'。

您可能會想:「照它說的做,將文件的所有者連接到IB視圖!」。但事情是,我甚至沒有在我的項目或項目目錄中的GameView.xib。

我在我的項目中有一個「GameViewController.m」並且匹配「GameViewController.xib」。使用該GameViewController會引發此錯誤,但我不明白它在何處嘗試加載「GameView.xib」。它不應該使用「GameViewController.xib」嗎?


如果我grep我的項目目錄,我看到它從「UserInterfaceState.xcuserstate」引用。

<string>file://localhost/Users/bemmu/Dropbox/b2/iphone/ValleyStory/ValleyStory/GameView.xib</string> 

這個提到的文件不存在。我之前可能已經有一個具有該名稱的文件,並將其重命名/刪除,但它並未從我在IB中可以看到的任何地方引用。

我是否設法混淆了xcode?

回答

5

檢查您正在使用的任何nib文件(如MainWindow.xib)。如果您從筆尖加載GameViewController,請檢查它正在加載的文件(在檢查器的信息標籤下)。確保它被設置爲「GameViewController」而不是「GameView」。

+0

當我手動設置「NIB名稱」(之前是空的)對我裏面的MainWindow.xib把GameViewController,它開始工作。非常感謝!我花了數小時試圖解決這個問題。它爲什麼會嘗試首先加載錯誤的xib仍然是個謎,但至少它是有效的。 – Bemmu 2011-03-28 20:05:44

+0

很高興能幫到你! – 2011-03-28 20:22:29

0

鑑於您之前引用了它,它聽起來像xcode沒有認識到它不再存在。從產品菜單中選擇「清潔」,然後「生成」,希望這會超過你的舊參考。

0

面臨同樣的問題,不得不在代碼更改視圖的名字:

MyViewController *controller = [[MyViewController alloc] initWithNibName:@"WrongViewName" bundle:nil]; 

MyViewController *controller = [[MyViewController alloc] initWithNibName:@"RightViewName" bundle:nil]; 
19

我的解決方案是一個有點不同。

  1. 點擊界面生成
  2. 選擇文件的所有者左側
  3. 打開該文件的用戶連接檢查
  4. 的廈門國際銀行如果視圖屬性還沒有有線,控制它拖動到查看圖標(在文件的所有者和第一響應者圖標下)。
+0

這解決了我的問題 – 2015-10-26 07:21:52

+0

第四點主要是 – 2017-01-24 07:20:35

0

我有多個視圖,並意外(我不知道這是怎麼發生的),但我的背景視圖沒有文件的所有者,所以對於將來有這個問題的其他人,請確保你所有的觀點都有一個文件所有者。

0

我是gettint相同的錯誤,然後檢查界面生成器中的類名,並看到我在自定義類屬性中鍵入視圖控制器類名稱。

2

我最近解決了這個問題。確保你按照這裏給出的步驟備份你的項目(以防萬一)。這些步驟解決了我的問題

  1. 退出Xcode中
  2. 導航到UserInterfaceState.xcuserstate位於.xcodeproj/project.xcworkspace/xcuserdata/<username>.xcuserdata和刪除文件。
  3. 重新打開Xcode。 Xcode將創建一個新的UserInterfaceState.xcuserstate這將是乾淨的。
+0

這對我有用!謝謝!! – Wirsing 2013-05-07 16:10:46

0

UIViewController在傳遞nil到initWithNibNamed:bundle:時搜索與控制器同名的筆尖檢查傳遞給初始值設定項的文件名是否正確並存在!

例如:。(如[[CCVisitorsController alloc] initWithNibName:nil bundle:nil]然後UIViewController中試圖與名稱CCVisitorsController加載筆尖爲默認

如果這個文件不存在,那麼你提到的錯誤被拋出

1

在我的情況,我不使用時所用的廈門國際銀行。我需要刪除構建階段>編譯源代碼.m文件,並添加了回去。

0

我有這個問題,因爲我是做壞事的

  • (ID)的initWithCoder:(NSCoder *)編碼器

其中NIB負荷。

3

我也有這個問題,但必須以不同的方式解決它。基本上,我有一個視圖控制器名稱MainViewController,它有一個名爲MainViewController.xib的xib。這個筆尖的視圖屬性設置爲MainViewController的文件所有者。

我還做了一個MainView.xib,其中包含一個視圖,該視圖將以編程方式添加到在MainViewController.xib中定義的視圖以及它的視圖。它基本上封裝了一個內部視圖,該視圖將位於MainViewController.xib的視圖中,並且它的文件所有者被設置爲MainViewController。

所以基本上,我希望MainViewController.xib加載爲MainViewController對象的筆尖,而在MainViewController內部,稍後我會添加由MainView.xib指定的內部視圖。

一對夫婦的問題出現了:

1)我在蘋果的文檔發現,通過加載故事板或筆尖一個視圖控制器時:

「如果視圖控制器類名與字結束「控制器」,如MyViewController ,它會尋找一個筆尖文件,其名無字「控制器」相匹配的 類的名稱,如MyView.nib。

它看起來的筆尖文件,其名稱的名稱相匹配的視圖 控制器類。例如,如果類名稱是MyViewController,則它會查找MyViewController.nib文件。「

因此,你不能有一個筆尖稱爲MainView.xib如果你也有一個所謂的筆尖和MainViewController想MainViewController.xib成爲MainViewController主要筆尖。

2)即使你刪除MainView.xib或將其重命名爲其他內容(本例中爲MainInternalView.xib),則必須刪除/清理iOS模擬器,因爲舊的nib文件(MainView.xib)仍將保留在應用程序中,並不會覆蓋整個文件應用程序包

如果您不想重置您的內容設置(也許您有一些數據y ou想要保存),然後右鍵單擊iOS模擬器文件夾中的應用程序,顯示軟件包內容,找到MainView.nib並將其刪除。 Xcode不會在重建時自動爲您執行此操作,因此我們需要手動刪除舊筆尖。總體而言,不要將名爲MainViewController和MainView的nib稱爲具有相同前綴的nib。調用MainView.xib其他的東西,比如MainInternalView.xib。

0

在我的情況下,這個錯誤是由愚蠢的錯誤產生的 - 我刪除_view視圖 dumb mistake

相關問題