UIView drawRect仅在UITableViewCell中调用一次,导致重新使用单元格时出现陈旧数据

时间:2016-10-24 02:23:15

标签: swift uitableview uiview drawrect

我有一个UITableViewCell,它包含我创建的自定义UIView(以及其他一些东西)。我的自定义视图扩展了UIView,并覆盖了drawRect以进行一些自定义绘制。

我的tableview在最初加载每个单元格时正确呈现,但是当我滚动表格时,正在重复使用单元格,并且不会为它们重新调用自定义UIView.drawRect方法。这导致过时的UIView被用于tableview中的单元格。

我做错了吗?我尝试在tableview单元格上设置setNeedsDisplay,但这不起作用。

2 个答案:

答案 0 :(得分:1)

事实证明我在setNeedsDisplay上呼叫UITableViewCell。当我在表格视图单元格内的自定义UIView上调用它时,它可以正常工作。

答案 1 :(得分:0)

我在cellForRowAt中调用它,它设法更新了我放在其中的自定义Tableview UIView上的图表。

下面的代码:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// this is cast AS! ErgWorkoutCell since this is a custom tableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "ergWorkoutCell") as? ErgWorkoutCell

cell?.ergWorkoutTitle.text = jsonErgWorkouts[indexPath.row].title
cell?.ergWorkoutTime.text = String(FormatDisplay.time(Int(jsonErgWorkouts[indexPath.row].durationMin * 60)))


cell?.ergLineChartView.setNeedsDisplay()


return cell!

  }