2013-04-09 80 views
4

爲什麼我在運行iPhone應用程序時仍然出現此錯誤?該文件是我一直在努力刪除和替換的ViewController,但它不會死。據我所知,我沒有任何參考(字符串或其他)在我的項目中的這個文件。Interface Builder文件中的未知類

  • 我已刪除了相關的文件,(我試圖擺脫它。)
  • 我已經打掃完項目和重建。
  • 我在我的模擬器中有「重置內容和設置」。
  • 我已經做了一個grep(grep -i -r「TheClassName」*),除了我的UserInterfaceState.xcuserstate文件外沒有任何匹配。
  • 我使用XCode的查找/替換選項卡搜索了代碼。
  • 我已經加倍檢查了我的Build階段,並且非常確定它不在那裏(它是一個大型項目)。

還有其他想法嗎?我花了太多時間試圖想出這件簡單的事情;我肯定錯過了什麼。

謝謝!

+0

「沒有,除了我UserInterfaceState.xcuserstate匹配」 - 你試圖刪除這個文件? – Kreiri 2013-04-09 19:28:34

+0

你可能在你的xib中設置了一個UIViewcontroller類到那個類? – Daniel 2013-04-09 19:31:22

+0

@Daniel,因爲xib文件只是純文本而不會顯示在我的grep中? – Brett 2013-04-09 19:34:46

回答

6

我終於在將近2天的時間在多臺機器上試用後解決了問題!我不會受挫!

我將問題追蹤到在應用程序初始化時調用的UINavigationController上的setViewControllers調用。我總是通過3個對象(導航控制器中有3個窗格)。即使我已經刪除了第三個對象,如前所述,三個對象總是會被傳入。前兩個對象的類型是正確的,但第三個對象只是一個UIViewController。奇怪的是,這個視圖控制器有一個nibName,它對應於我以前刪除的目標文件和Xib文件。當然,當這個borked UIViewController被調用時,它會崩潰,因爲顯然已經刪除了相應的nib。請記住,這個對象或Xib的文本名稱無法在我的目錄中找到,所以我完全不知道當我運行我的應用程序時它是如何在它的世界中存在的。

所以,我想應用程序可能沒有被正確清理。我加倍和三重檢查了這一點。我甚至驗證了我的工作區設置是正確的(文件 - >項目設置 - >高級)。該應用程序確實每次都會重新編譯。

其次,我開始思考也許是通過其他方式設置對象。反向工作時,我添加了一些斷點,並發現在父UINavigationController上調用了initWithCoder - 這最終正在調用對象上的setViewControllers並分配三個視圖控制器(其中之一是有問題的控制器)。我可以很容易地從調用堆棧中看到正在加載的Nib文件正在反序列化某些令人反感的內容。

所以,我開始挖掘我的Xib文件。當然,對象名稱不在文件中(因爲grep沒有找到任何東西)。我刪除並重新創建了包含我的根UINavigationController的Xib部分。這最終改變了Xib文件中的Object ID和ref。其次,我創建了一個新的Xib和UIViewController,其名稱與我之前刪除的名稱相同,希望如果我創建並重新刪除它們,Xcode可能會很開心。然後我編譯,重新刪除它們,再由Xib文件更新,並用grep重新確認,確實沒有這個名字。

它工作。在這個問題上花了好幾天之後,我確信界面生成器中存在一個bug,但是我想重新訪問這個問題來提交bug報告嗎?絕對不是......

+0

我得到了這個問題,因爲我最近開始製作便利的構造函數,並重命名了我的xib文件。我有一段舊的代碼嘗試使用舊筆尖(我認爲它仍然以一種奇怪的方式存在?),並且舊的引用丟失了連接。 – Hackmodford 2013-11-26 16:02:45

5

檢查您的筆尖或故事板,並確保您的所有視圖均未設置爲課程!

+0

我真的認爲就是這樣......我記得過去有類似的錯誤,那是問題:IB中的視圖被設置爲我已刪除的類。不過,讓我知道這是不是問題。 – 2013-04-09 21:45:47

+0

我已經經歷過每一個筆尖,並且已經證實情況並非如此。我不使用故事板。 – Brett 2013-04-10 00:56:18

+0

啊,無賴...我希望它會很簡單(我們不是總是這樣嗎?)很高興你把它整理出來!乾杯。 – 2013-04-10 15:05:12

2

在我的情況下,我通過名稱Custom class name of View而不是Custom class of ViewController解決了一個問題。我錯誤地加入了這樣的視圖,如下所示。

enter image description here

它應該是視圖控制器這樣的。

enter image description here

這是在我的情況下,你可能是它與另一個組件相關。

+0

發生這種情況很多,不小心選擇視圖而不是周圍的視圖控制器。您必須在非常細的線上正確點擊以選擇控制器。 – Kokodoko 2014-07-25 13:27:24

1

當視圖類在框架中時,會發生這種情況。選擇框架的模塊。 CocoaPod示例:HSegmentControl。

Example in image is with Cocoapod HSegmentControl

相關問題