【问题标题】:Add UIView To Tableview cell not updating将 UIView 添加到 Tableview 单元格不更新
【发布时间】:2021-10-04 08:21:05
【问题描述】:

我正在尝试将 UIView 添加到 tableview 单元格中的现有 IBOutlet。但是,直到我滚动离开单元格并滚动回它之前,这不会出现。

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let stockCell = tableView.dequeueReusableCell(withIdentifier: "stockCell", for: indexPath) as! customStockCell

    let progressBar = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
    progressBar.backgroundColor = .green
    stockCell.progressContainerView.addSubview(progressBar)

    return cell
}



class customStockCell: UITableViewCell {
    @IBOutlet var progressContainerView: UIView!
}

【问题讨论】:

  • 除此问题外,请注意,每当重用单元格时,您都会添加一个新视图。您应该检查视图是否已经存在。
  • 谢谢,这不是问题的一部分,我知道如何解决它,所以我没有在这个问题中包含该代码。
  • 为什么要在cellForRowAt 委托方法内的单元格中添加UIView 对象? progressBar 家伙的目的是什么?如有必要,创建UITableViewCell 的子类并在那里进行。
  • 在我所有的编码生涯中,我一直在 cellForRow 部分完成大部分设置。那不是我应该做这些事情的地方吗?

标签: swift tableview


【解决方案1】:

使用 contentView 而不是 containerView 对我来说很好。

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let stockCell = tableView.dequeueReusableCell(withIdentifier: "stockCell", for: indexPath)
    
        let progressBar = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
        progressBar.backgroundColor = .green
        stockCell.containerView.addSubview(progressBar)
    
        return cell
    }

您还可以创建自定义单元类并将此逻辑添加到其初始化程序中。

或者,如果上面的解决方案不起作用,你可以在willDisplayCell:里面添加这个逻辑

  func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    let progressBar = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
    progressBar.backgroundColor = .green
    cell.containerView.addSubview(progressBar)
  }

【讨论】:

  • 抱歉“containerView”是一个自定义类/IB Outlet UIView 已经在 tableview 单元格中。将更新代码以反映这一点。
  • 能否分享一下“customStockCell”类代码?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-20
  • 1970-01-01
  • 2017-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
相关资源
最近更新 更多