自从开始使用 iOS 6(以及 iOS 7)编译我的应用程序以来,我开始看到此消息。我知道 UITableViews 管理单元格的方式在 iOS 6 中是不同的,但我不需要修改我的代码来让它继续工作。但我担心此消息可能会指出一些我尚未看到的潜在问题。
任何人都可以阐明吗?
从 iOS 7 beta 5 开始,包括在 iOS 7 GM/Release 版本中,我开始在日志中出现此错误,而在 iOS 6 或更早的 iOS 7 beta 中,我的应用程序中从未出现过这种情况。经过多次尝试,我找到了原因:
我正在使用UITableViewCell
我的节标题视图的对象并将它们返回tableView:viewForHeaderInSection:
。这似乎是常见的做法,特别是自 iOS 5 以来,使用 Interface Builder 将节标题视图设计为 StoryBoard 中的原型表视图单元变得很容易。
当我将应用程序更改为仅使用常规应用程序时UIView
我的节标题视图的子类,错误消失了,更重要的是,我的表视图停止随机删除节标题!
看来(自 iOS 7 beta 5 起)UITableView
在内部维护所有的映射UITableViewCell
其视图层次结构中的对象及其各自的索引路径。由于节标题(或页脚的表视图标题)没有索引路径,如果您使用UITableViewCell
对于这些视图的对象,表视图在找到一个对象时会感到困惑UITableViewCell
它没有索引路径,导致“没有重用表单元格的索引路径”错误,如果不幸的话,会在表视图中显示故障:
UPDATE:如果您可以访问 Apple 开发论坛,这里是关于它的主题(我开始的):https://devforums.apple.com/message/882042#882042
正如该线程中所建议的,如果您不想重构太多,您可以创建一个UIView
包裹在你的周围UITableViewCell
并将其作为节标题视图返回。
UIView *view = [[UIView alloc] initWithFrame:[cell frame]];
[view addSubview:cell];
return view;
但请注意,这个“包装器”UIView
方法不能很好地与自动布局和设备旋转配合使用,所以我建议您使用UIView
页眉和页脚单元格的子类,而不是UITableViewCell
子类,如答案的主要部分所述。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)