ios - 自定义单元格在屏幕外时未填充正确的数据

标签 ios uitableview swift

请原谅这个问题的天真本质,但尽管我在这里搜索,但我找不到解决方案。

在我的项目中,我有一个带有自定义单元格的 UITableView,所有这些单元格都由来自 API 的数据填充。此时,根据所需的设计,启动时屏幕上可以看到四个单元格,我必须滚动才能看到其他四个单元格。每个细胞有两个组成部分;一个标签和一个 UIView,它正在生成折线图。前四个单元格都正常工作,但第二组单元格(加载时在屏幕外)正确填充标签,但 UIView 未显示正确的数据集(它正在填充以前使用的数据)。

奇怪的是,如果我点击有问题的单元格之一,该单元格会立即重新加载正确的数据。

对于上下文,这是我的 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
    }
...

我是否需要在加载时以某种方式“预渲染”屏幕外单元格?再次为自己的天真感到抱歉。

一如既往,感谢您抽出时间!

最佳答案

正如您可能知道的那样,离开屏幕的单元格将被重新用于新行。这就是新行与旧图表一起出现的原因。事实上,如果您点击单元格,图表就会刷新并正确显示,这让我认为这是一个绘图问题。尝试通过在带有图表的 View 上调用 setNeedsDisplay 来触发强制重绘:

cell.lineChart?.graphPoints = [1,2,3,4,5]
cell.lineChart?.setNeedsDisplay()

关于ios - 自定义单元格在屏幕外时未填充正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30668370/

相关文章:

当我设置 BarTintColor 时,iOS 导航栏失去透明度

ios - 要在 Ipad 上运行 Adob​​e Air 应用程序需要满足哪些要求?

ios - 解析没有匹配项的 getObjectInBackgroundWithId 返回

iphone - 超过 1 个部分的自定义背景 uitableview (IPHONE)

swift - 在单元测试中捕获调试窗口输出?

ios - 在 iOS 上拦截背景音频流

swift - 如何在 Swift 中更改 TableView 单元格中 UIButton 的颜色?

iphone - 在 UITableViewController 子类中重写 loadView

swift - Apple 的函数类型教程

swift - ios13 使用 PHImageManager 获取原始图像