微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UITableviewcell 是错误的数据

如何解决UITableviewcell 是错误的数据

我已经创建了一个自定义的 UITableViewCell,并且该单元格有两个 UITableView。
他们每个人都有UITableViewCell。像这样

  • 查看
    • UITableView --(WrapTableView)
      • UITableViewCell
        • 堆栈视图
          • UITableView --(informationTableView)
            • UITableViewCell
          • UITableView --(ItemTableView)
            • UITableViewCell

我的代码是这样的,

class MyViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
  @IBOutlet weak var wrapTableView: UITableView!
  // ... //
  func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
          guard let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
                  as? WrapTableViewCell else {
              return UITableViewCell()
          }      
          cell.setup()
          return cell
      }
  }
}

class WrapTableViewCell: UITableViewCell {
    @IBOutlet weak var informationTableView: UITableView!
    @IBOutlet weak var itemTableView: UITableView!
    
    let informationTableViewDelegate = informationTableViewDelegate()
    let itemTableViewDelegate = itemTableViewDelegate()
   
    func setup(){
      self.informationTableView = informationTableViewDelegate
      self.itemTableView = itemTableViewDelegate
    }

    override func prepareForReuse() {
      //...
      //What should I write?
      ...//
    }
}

class informationTableViewDelegate: NSObject,UITableViewDelegate {
   guard let cell = tableView.dequeueReusableCell(withIdentifier: informationTableViewDelegateCell.identifier) as? informationTableViewDelegateCell else {
            return UITableViewCell()
        }        
   cell.setup(text: text)
   return cell

}

class ItemTableViewDelegate: NSObject,UITableViewDelegate {
   guard let cell = tableView.dequeueReusableCell(withIdentifier: ItemTableViewDelegateCell.identifier) as? ItemTableViewDelegateCell else {
            return UITableViewCell()
        }        
   cell.setup(itemPrice: itemPrice)
   return cell
}


class informationTableViewDelegateCell: UITableViewCell {
    @IBOutlet weak var itemNameLabel: UILabel!

    func setup(text:String){
       self.itemNameLabel.text = text
    }

    override func prepareForReuse() {
      //...
      //What should I write?
      ...//
    }
}

class ItemTableViewDelegateCell: UITableViewCell {
    @IBOutlet weak var itemPriceLabel: UILabel!

    func setup(itemPrice:String){
       self.itemPriceLabel.text = itemPrice
    }

    override func prepareForReuse() {
      //...
      //What should I write?
      ...//
    }
}

我的问题是,在滚动过程中,旧单元格仍然显示
我知道我必须使用 prepareForReuse 方法重置旧数据才能重置所有日期。
但是,就我而言,我不知道在每个 prepareForReuse() 方法中写什么,因为例如,WrapTableViewCell 的属性不像 image 或 Label,但在这些情况下,image.image =应用了 nil 或 label.text = "",但就像 IBOutlet 附加的 tableviews

谢谢

解决方法

不需要使用 prepareForReuse 方法。您需要重新加载数据才能传递给表格视图

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。