2012-11-13 28 views
11

嗨,我似乎在開發故事板應用程序時偶然發現了奇怪的事情。標識符缺失代理UIStoryboardPlaceholder

我的應用程序啓動畫面後馬上在控制檯停止我收到錯誤消息:

Missing proxy for identifier UIStoryboardPlaceholder 

現在,如果我嘗試讓應用程序繼續運行,我收到新郵件進入控制檯,我相信這些有關這樣的事實,有什麼問題第一條錯誤消息

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: 
'[<IntroViewController 0x6e35f40> setValue:forUndefinedKey:]: 
this class is not key value coding-compliant for the key sceneViewController. 

與iOS 5.1模擬器工作時,有什麼奇怪的是,我只得到這個錯誤。它可以在iOs 6模擬器上以及同時使用iOs 6和iOs 5.1的設備上正常工作。

我試圖找到答案,但Google表示找不到UIStoryboardPlaceholder的任何結果,更不用說整個錯誤消息。我確信,我的xcode項目中沒有「UIStoryboardPlaceholder」這個詞(甚至不在nib文件中),也沒有提到'sceneViewController'。任何想法可能是錯誤的?

編輯:我試圖重啓模擬器和清潔項目,但都無濟於事

+0

我在iOS 7設備上遇到同樣的崩潰。 當我將Restoration ID分配給視圖控制器(根選項卡欄控制器的選項卡)並將視圖分配給單獨的xib時,它會開始。 如果我將視圖移動到故事板,一切都很好。 –

回答

6

我有同樣的問題。嘗試清理項目並恢復模擬器。

+1

謝謝你的回答。不幸的是,我確實嘗試過,並沒有幫助。 – Lukas1

1

將我添加到列表中。在「重構 - 重命名」類後,我得到這個錯誤。我正在重命名的類是具有自己的.xib的自定義ViewController。我使用Storyboard,它啓動了一個包含「Container View」的viewController,它在啓動時嵌入了自定義的ViewController。

到目前爲止唯一的出路是不使用我重構的.xib(從容器視圖斷開它)。

我的半解決方案:
我已經從先前的工作快照恢復我的應用程序,並從頭開始創建新的自定義ViewController和.xib,而不是重構。將它連接到Storyboard並再次收到錯誤消息。清理構建並從模擬器中刪除應用程序並重新運行,然後它奇蹟般地無誤運行。 因爲這個原因,我相信在Xcode中有一個重構重命名的錯誤,它會在幕後破壞一些故事板文件。一旦我確認新的.xib沒有錯誤地附加到故事板,我將類代碼複製/粘貼到新的自定義viewController類中,並按照您的預期經歷了將類對象重新連接到.xib的過程。運行它,一切仍然有效。

僅供參考 - 以下是我嘗試從錯誤中恢復的一些失敗步驟(在放棄和恢復快照之前)。
1.清理Build。
2.在iOS模擬器中刪除應用程序。
3.刪除自定義ViewController .xib中的所有視圖。
4.命名自定義ViewController的東西。
5.在Storyboard中,向代表我的自定義Viewcontroller類的ViewController添加一個空白視圖。 這工作,並允許我的應用程序運行,但我的自定義類既不能加載自己的意見,而是在默認的空白視圖透明的地方,也不是自己的視圖。調試顯示我的自定義類.xib視圖分配給self.view時爲零。

我目前正在避免Xcode的重構 - 爲具有.xib的文件重命名。

+0

感謝您的洞察力。我現在也會小心重構。不幸的是,我不能回到之前的任何狀態,因爲我不記得我是否使用過這個功能,並且造成了這個問題,並且在此期間做了很多改變。我只是在真實設備上進行測試,在那裏我沒有遇到任何問題 – Lukas1

3

我得到了一個應用程序的錯誤,我正在從.xib文件轉換爲故事板。我的應用程序包含一個UITabBarController,點擊某些標籤會觸發錯誤。

就我而言,問題在於我已將視圖控制器複製到使用「NIB名稱」屬性從外部.xib文件加載視圖控制器視圖的故事板。故事板視圖控制器不支持從.xib文件加載視圖,所以我的故事板包含一個沒有視圖的視圖控制器。

我打開外部.xib文件,複製視圖,將其粘貼到故事板中相應的視圖控制器中,並確保粘貼的視圖從屬於(縮進)故事板場景中的視圖控制器。然後我將視圖重新連接到視圖控制器中的插座。

當我重新運行應用程序時,錯誤消失了。

+0

實際上,您可以爲其視圖設置具有單獨xib的故事板視圖控制器。只需將您的xib文件命名爲視圖控制器類的名稱,例如MyViewController.xib。 –

+1

@vladim - 我試圖按照你的建議去做,文檔說你可以,但這是什麼導致這個錯誤。 – hooleyhoop

0

我有同樣的錯誤,終於解決了它。 我的問題是,我有:

[[storyboard instantiateViewControllerWithIdentifier:@"TripDetail"] methodThatDoesNotExist:@"param"] 
20

我們有同樣的問題:在一個單獨的XIB文件中定義它的界面故事板文件視圖控制器。 (使用的Xcode 6.3.1,iOS 8.3版本和1.2雨燕)

我們使用的是斯威夫特,所以我們又增加了@objc()聲明的類聲明:

@objc(TestViewController) class TestViewController: UIViewController 

我們可以實例化視圖控制器從另一個視圖控制器使用self.storyboard?.instantiateViewControllerWithIdentifier("TestViewController")只是很好,但是當呈現視圖控制器(使用self.presentViewController(viewController, animated: true, completion: nil))應用程序崩潰與相同的「缺少代理」和「沒有鍵值編碼兼容的關鍵sceneViewController」錯誤。

我們的解決方案,我們發現經過反覆受挫試錯樣的調試只是確保視圖控制器的故事板ID情節板中的文件是不一樣的類名

當我們從改名「TestViewController」到「testViewController」(唯一的區別是小寫的第一個字母)故事板ID,一切工作...

奇怪嗎?你好,但現在一切似乎都在起作用。

+0

我認爲這個想法「確保故事板文件中的視圖控制器」Storyboard ID與類名稱不同「greate :)。 –

+0

它也適用於我!保存我的神經,非常感謝! –

+0

偉大的解決方案,謝謝!顯然,這是一個蘋果公司的性交 – iago849