【问题标题】:why tableview cells are starts flickering when they are going to be reused?为什么要重用的tableview单元格开始闪烁?
【发布时间】:2016-07-20 05:27:45
【问题描述】:

我正在构建一个聊天界面。我在UITableView 中使用了多种类型的tableView 单元格。当新单元格从可重用单元格添加到tableView 时,表格视图单元格开始闪烁。我正在使用以下代码将 tableview 单元格出列。如何在没有任何闪烁的情况下平滑滚动。

tableView.dequeueReusableCellWithIdentifier("MessageLessonTableViewCell") as! MessageLessonTableViewCell

【问题讨论】:

  • 您是否在应用中重新加载 tableView ?
  • @PranavGupte 我正在以两种方法添加新的表格视图单元格。 self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: 动画) self.tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: UITableViewScrollPosition.Bottom, 动画: true)
  • 并添加元素数据源并使用 tableview.reloaddata()
  • 这两种方法对我没有多大帮助
  • 因为多次使用 tableView.reloaddata() 会导致 flikering 效果见:stackoverflow.com/questions/15196927/…

标签: ios iphone swift uitableview


【解决方案1】:

闪烁的主要原因是,tableView 获取数据附加时间较晚。所以当你滚动时,从一种类型的 tableViewCell 切换到另一种需要时间。另外,您可能正在cellForRowAtIndexPath 中执行数据库操作,这会延迟返回 tbaleViewCell。实现平滑滚动参考this

【讨论】:

  • 我尝试在 willdisplay 单元格中进行单元格配置。还是不行。
  • 如果您在 willDisplay 或 cellForRowATIndexPath 中进行数据库操作,请尝试获取数组中的所有数据,并在显示单元格内容时使用它。不要为每个单元执行数据库操作。
  • 只有当我尝试添加新单元格时才会出现问题。那时只有滚动在闪烁。假设用户想要添加消息然后它在闪烁。
  • 插入新单元格时使用 beginUpdate 和 endUpdate。
  • 使用它仍然没有帮助。我认为问题正在发生,因为所有单元格都是动态高度并重用单元格
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多