簡體   English   中英

使用iOS 7的Xcode 5中的NSInternalInconsistencyException:'故事板:容器視圖中有意外的子視圖。

[英]NSInternalInconsistencyException in Xcode 5 with iOS 7: 'Story Board: There are unexpected subviews in the container view.'

我剛剛在OS X Mavericks中安裝了Xcode 5.0.2。 在Xcode 4.5上運行最初為iOS 5.1構建的項目時,我收到'NSInternalInconsistencyException'錯誤,如下所示:

*** Assertion failure in -[UIStoryboardEmbedSegue perform],    
/SourceCache/UIKit_Sim/UIKit-2903.23/UIStoryboardEmbedSegue.m:19

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
reason: 'There are unexpected subviews in the container view.  
Perhaps the embed segue has already fired once or 
a subview was added programmatically?'

我所做的是解決顯示的與已棄用的API相關的任何警告,但我仍然面臨這個問題。

我的問題是:

  • 如何確定哪個故事板場景對此問題負責?
  • 此外,是否有任何建議的方法來解決這個問題?

注意:我注意到我在xCode 5中使用iOS 7作為基本SDK,而它曾經是xCode 4.5上的iOS 6,但部署目標在兩者中都設置為6.0。 將Xcode 5中的部署目標更改為其他SDK版本並未解決此問題。

注意2:我注意到在iPhone 6的iPhone模擬器上運行Xcode 4.5並且Base SDK設置為iOS 6.0時沒有發生此問題。

故事板截圖 故事板截圖(樣本) Table View Controller有一個容器視圖,其中一個'embed segue'指向一個視圖控制器。

我想到了。

我如何擁有自己的UI

我正在為iPhone和iPad創建一個通用應用程序,每個設備都有一個故事板。 我有一個連接到導航控制器的標簽欄控制器,然后連接到UITableViewController,它在靜態單元格中顯示一個表格(為了讓頂部行顯示標題)。 在這個UITableViewController里面,我有一個容器視圖(使用自定義類MyApp_UITableViewCell設置),它顯示了許多動態行。

原因

該問題是由於容器視圖設置為將自定義類設置為:MyApp_BIUiTableViewCell引起的。 通過刪除故事板中對此自定義類的引用,問題已被刪除

我是怎么解決的

  1. 將基本SDK和部署目標更改為iOS 7。

  2. 在每個設備的故事板中:我在身份檢查器中為每個容器視圖(已設置為MyApp_UITableViewCell)刪除了引用自定義單元格

我的建議

對於類似的問題,我可以說是檢查自定義類集並嘗試刪除(逐個)。 此外,嘗試注釋掉每個viewDidload和viewDidappear內容,並查看導致問題的位置。

如果其他人偶然發現這是我的故事:

將我的Swift2功能分支合並到我的Swift3分支后,我收到了這個錯誤。

我在Storyboard中有一個ContainerView。 我為這個ContainerView添加了一個插座給我的ViewController。 之后我創建了一個覆蓋並為以下方法添加了一個斷點:

 override func prepare(for segue: UIStoryboardSegue, sender: Any?)

當斷點被擊中時,我通過在控制台中執行以下操作來檢查ContainerView有多少個子視圖。

po containerView.subViews

這告訴我,我的ContainerView已經有一個UIVisualEffectBackdropView類型的子視圖(或具有類似的名稱)。

所以我再次檢查了我的ContainerView,並意識到它所分配的自定義類是UIVisualEffectView類型。 這顯然導致它自動添加了backdropView,從而使它與最終引發錯誤的斷言不兼容。 我所要做的就是不是從UIVisualEffectView繼承而是從普通的UIView繼承。 當然為了實現視覺效果,我必須將它添加到ContainerView嵌入的ViewController中。

希望這有助於避免讓人頭疼:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM