UITableView“有时”无法正确绘制单元格
Posted
技术标签:
【中文标题】UITableView“有时”无法正确绘制单元格【英文标题】:UITableView not drawing Cells correctly "sometimes" 【发布时间】:2015-02-03 16:32:07 【问题描述】:当我的应用显示表格时,有时会显示数据库的所有内容。但是当我尝试从另一个 VC 获取该 VC 的回报时(可以说,我在数据库中添加了一个新条目),它会显示这个。如果您触摸“缺失”单元格下方,它会转到正确的条目...
我已经尝试过使用:
[self.cTableView setNeedsDisplay]; [self.cTableView setNeedsLayout]; 或者 [self.cTableView 开始更新]; [self.cTableView endUpdates]; 或者 [self.cTableView reloadData];
但仍然无济于事。有没有办法以图形方式刷新表格视图?
由于声誉问题,我无法发布图片,但我要发布的图片看起来 TableView 被 CUT 关闭了。
图片: https://dl.dropboxusercontent.com/u/1336061/***/Untitled.jpg
【问题讨论】:
您的新条目是否出现在表的数据源中? 【参考方案1】:您是否正确地重复使用了您的手机? 检查单元重用标识符。看到每个迭代都没有分配单元格(在 cellForRow 委托中)。
【讨论】:
嗯...我忘了提到我正在使用来自 xib 的自定义单元格。我确实检查了 Cell ID,并且在查看它时,它是不同的。解决这个问题提出了一个新类型的问题:New Result Here 仔细查看我创建的自定义 CellView,它使用相同的 Cell Reuse ID。我改变了一些,它起作用了......现在的问题是完全刷新 UITableView。 首先,检查项目数组:它仍然包含项目。其次,每次迭代都应该调用用对象/数据更新单元格的代码。 (你是不是不小心把它放在了分配块里?) 我能够确定我的自定义单元的重用 ID 没有被使用。我现在正在用自定义单元的其余部分解决这个问题 :)【参考方案2】:如果向表的“数据源”提供数据的对象发生变化,不妨调用:
[table reloadData];
或
使用索引加载新元素(查看 UITableView 标头以使用正确的委托。
【讨论】:
就是这样,数据就在那里。我可以触摸一个不可见的单元格,它会显示正确的数据。图片将是描述我的问题的最佳方式。让我把它贴出来。 这看起来不像是数据问题,更像是一些UI问题。您使用的是自动布局还是一些约束?尝试滚动视图。如果它滚动将意味着 UI 中的某些内容是错误的(不是表数据本身)。如果您使用的是 ios8,您应该能够在运行时从 xib/storyboard 检查视图层 如果你暂停调试器并输入[[[UIApplication sharedApplication] keyWindow] recursiveDescription]
,tableview 是否有正确的框架?是否有另一种观点涵盖它?或者,您是否尝试过 xcode 的视图调试器? developer.apple.com/library/ios/recipes/xcode_help-debugger/…
让我检查一下。自动布局不是问题,因为我仍然可以向下滚动。再往下,但不显示单元格。如果我触摸一个空白空间,它会继续记录。我现在正在进一步研究细胞是如何绘制的。以上是关于UITableView“有时”无法正确绘制单元格的主要内容,如果未能解决你的问题,请参考以下文章
分组 UITableView 自定义绘制单元格,而不更改背景颜色?
如何从动态 UITableView 单元格中获取 UILabel 的大小?
更改单元格中的数据后,UITableView 中的自定义单元格将无法正确重新加载
UITableView 自定义单元格高度未正确管理 swift 中的动态约束