断言失败 - [UITableView layoutSublayersOfLayer:]

Ull*_*i H 11 objective-c uiviewcontroller uisearchbar xcode5 ios7.1

我想使用UISearchDisplayControllerUIViewController,包括一个UITableView.
我使用Autolayout.当我尝试将SearchBar(_searchBar)放在tableHeaderView中时

self.tableView.tableHeaderView = _searchBar;
Run Code Online (Sandbox Code Playgroud)

我收到错误' NSInternalInconsistencyException',原因:'执行-layoutSubviews后仍然需要自动布局.UITableView的-layoutSubviews实现需要调用super.

禁用Autolayout,错误消失,但我需要 Autolayout ...

当我使用Custom Cells或StandardCells时出现错误...

当TableView没有行时出现错误...

jrt*_*ton 16

作为这个问题的一般解决方案,或至少找到其原因的方法:

  • 打开异常断点
  • 子类UITableView和覆盖layoutSublayersOfLayer:,只是调用超级
  • 运行您的应用程序 - 您将停止使用新方法
  • 在调试器中,键入 po [self _autolayoutTrace]

这将显示窗口中每个视图的打印输出,其中的视图无法通过星号或星号突出显示自动布局AMBIGUOUS LAYOUT.这些是您调查约束所需的视图.


Vla*_*vík 6

向UITableView添加子视图时,子视图有一些特定要求.考虑将子视图添加到控制器中的另一个视图(superview)而不是UITableView.

使用UITableViewCell子类执行-layoutSubviews后仍需要"自动布局"