Assertion failure in -[UITableView layoutSublayersOfLayer:]

谁说我不能喝 提交于 2019-11-27 14:59:19

问题


I want to use an UISearchDisplayController on UIViewController, that includes an UITableView.
I use Autolayout. When i try to put the SearchBar (_searchBar) in the tableHeaderView with

self.tableView.tableHeaderView = _searchBar;

I get the error 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews. UITableView's implementation of -layoutSubviews needs to call super.'

Disabling Autolayout, the error disappears, but i need Autolayout...

The error appears, when I use Custom Cells or StandardCells...

The error appears, when the TableView has no rows...


回答1:


As a general solution to this problem, or at least a way of finding the cause of it:

  • Turn on exception breakpoints
  • Subclass UITableView and override layoutSublayersOfLayer:, just calling super
  • Run your app - you will stop in your new method
  • In the debugger, type po [self _autolayoutTrace]

This will show you a printout of every view in the window, with the views where auto layout has not been able to come up with a solution highlighted by asterisks or AMBIGUOUS LAYOUT. These are the views you need to investigate the constraints for.




回答2:


When adding a subview to UITableView there are some specific requirements for the subview. Consider adding the subview to another view(superview) in your controller instead of UITableView.

"Auto Layout still required after executing -layoutSubviews" with UITableViewCell subclass



来源:https://stackoverflow.com/questions/23020326/assertion-failure-in-uitableview-layoutsublayersoflayer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!