【发布时间】:2012-09-18 14:43:21
【问题描述】:
使用 XCode 4.5 和 iOS 6,我正在开发一个带有自定义单元格的简单表格视图的应用程序。我在 iOS 5 及更低版本中已经这样做了一百次,但由于某种原因,新的 autoLayout 系统给我带来了很多麻烦。
我在 IB 中设置了我的表格视图和原型单元,添加了子视图并将它们连接为 IBOutlets,然后设置了我的委托和数据源。但是现在每当从cellForRowAtIndexPath 获取第一个单元格时,我都会收到以下错误:
*** -[ShopCell layoutSublayersOfLayer:] 中的断言失败,/SourceCache/UIKit_Sim/UIKit-2372/UIView.m:5776
*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“执行 -layoutSubviews 后仍需要自动布局。 ShopCell 的 -layoutSubviews 实现需要调用 super。'
我没有在我的子类单元 (ShopCell) 中实现 -layoutSubviews 方法,即使我尝试这样做并添加超级调用,因为它表明我仍然得到相同的错误。如果我从 IB 中的单元格中删除子视图,并将其更改为标准 UITableViewCell,一切都会按预期工作,当然我的单元格中没有数据。
我几乎可以肯定我遗漏了一些简单的东西,但找不到任何文档或指南来说明我做错了什么。任何帮助将不胜感激。
编辑:刚刚尝试将其更改为 IB 中的 UITableViewCell 并保留所有子视图,仍然是同样的错误。
【问题讨论】:
-
如果使用自动布局,请在调试器区域尝试
lldb [[UIWindow keyWindow] _autoLayoutTrace]。 -
您是否使用 UIView 作为自定义单元格而不是 UITableViewCell ?我有同样的问题。我有自定义单元格的 UIView 并正在向其中添加子视图。改成 UITableViewCell 就可以了。
-
嘿迈克,你是如何定义网点的?它们是类扩展中实现文件中的属性吗?
-
@A-Live 每当我尝试使用该方法时,我都会在调试器中收到错误....此方法仍然有效吗?编辑:没关系,它是自动布局中的小写 l。
-
取消选中检查器中的自动布局框,然后清理并运行。它会很有效的。
标签: objective-c ios xcode4.5 autolayout