gpt4 book ai didi

ios - iOS 6/7 中的 "no index path for table cell being reused"消息是什么意思?

转载 作者:IT王子 更新时间:2023-10-29 07:34:37 26 4
gpt4 key购买 nike

自从开始使用 iOS 6(以及 iOS 7)编译我的应用程序后,我就开始看到这条消息。我知道 UITableViews 管理单元格的方式在 iOS 6 中有所不同,但我不需要修改我的代码就可以继续工作。但我担心此消息可能指向一些我尚未发现的潜在问题。任何人都可以阐明吗?

最佳答案

从 iOS 7 beta 5 开始,我开始在日志中显示此错误,包括在 iOS 7 GM/Release 版本中,而在我的 iOS 6 或更早的 iOS 7 beta 中的应用程序中从未发生过。经过大量试验,我找到了原因:

我为我的节标题 View 使用了 UITableViewCell 对象,并在 tableView:viewForHeaderInSection: 中返回它们。这似乎是一种常见的做法,尤其是自 iOS 5 以来,使用 Interface Builder 在 StoryBoard 中将节标题 View 设计为原型(prototype)表格 View 单元格变得很容易。

当我将我的应用更改为仅对我的节标题 View 使用常规 UIView 子类时,错误消失了,更重要的是,我的 TableView 停止随机删除节标题!

似乎(自 iOS 7 beta 5 起)UITableView 在内部维护其 View 层次结构中所有 UITableViewCell 对象及其各自索引路径的映射。由于节标题(或页脚的表格 View 标题)没有索引路径,如果您为这些 View 使用 UITableViewCell 对象,表格 View 在找到 UITableViewCell 它没有索引路径,导致“没有重复使用的表格单元格的索引路径”错误,如果你不走运,会在你的表格 View 中显示故障:

更新:如果您可以访问 Apple Dev Forums,这是关于它的主题(我开始的):https://devforums.apple.com/message/882042#882042

正如该线程中所建议的那样,如果您不想重构太多,您可以在 UITableViewCell 周围创建一个 UIView 包装器并将其作为部分返回标题 View 。

UIView *view = [[UIView alloc] initWithFrame:[cell frame]];
[view addSubview:cell];

return view;

但是请注意,这种“包装”UIView 方法不能很好地与 AutoLayout 和设备旋转配合使用,因此我建议您为页眉和页脚单元格使用 UIView 子类,而不是答案主要部分中解释的 UITableViewCell 子类。

关于ios - iOS 6/7 中的 "no index path for table cell being reused"消息是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12772197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com