原谅这个问题的天真本质,但尽管我在这里搜索,但我找不到解决方案。
在我的项目中,我有一个带有自定义单元格的UITableView,所有这些单元格都由API中的数据填充。此时,基于所需的设计,在发布时屏幕上可以看到四个单元格,我必须滚动查看其他四个单元格。每个细胞有两个组成部分;标签和UIView,它生成折线图。前四个单元格都正常工作,但第二组单元格(加载时屏幕外)填充标签正确,但UIView没有显示正确的数据集(它填充了以前使用过的数据)。 / p>
奇怪的是,如果我点击其中一个有问题的单元格,单元格会立即重新加载正确的数据。
对于上下文,这是我的TableViewController的一部分;
...
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return minions.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
return minionCellAtIndexPath(indexPath)
}
func minionCellAtIndexPath(indexPath:NSIndexPath) -> MinionCell {
let minion = minions[indexPath.row]
let cell = tableView.dequeueReusableCellWithIdentifier(minionCellIdentifier, forIndexPath: indexPath) as! MinionCell
if let name = minion.name {
cell.nameLabel?.text = minion.name ?? "Minion"
cell.lineChart?.graphPoints = minion.bandwidth ?? [1,2,3,4,5]
} else {
cell.nameLabel?.text = "No data available."
cell.lineChart?.graphPoints = [1,2,3,4,5]
}
return cell
}
...
我是否有可能以某种方式“预渲染”负载下的屏幕外单元格?再次,抱歉天真的本性。
一如既往,谢谢你的时间!
答案 0 :(得分:0)
正如您最有可能知道的那样,屏幕上的单元格会被重新用于新行。这就是新行伴随旧图形的原因。事实上,如果你点击单元格图形刷新并正确显示,我认为这是一个绘图问题。尝试使用图表在视图上调用setNeedsDisplay
来触发强制重绘:
cell.lineChart?.graphPoints = [1,2,3,4,5]
cell.lineChart?.setNeedsDisplay()
答案 1 :(得分:0)
我对你的职能minionCellAtIndexPath
持怀疑态度。
您再次获取旧数据的原因,而不是更新的原因可能是因为您没有重置它。
在if let
检查之前,请设置硬编码值,即您在其他设置中设置的值。然后再次运行。