UITableView 自定义单元格数据在快速滚动时不匹配

UITableView Custom cell data mismatched on fast scrolling

    class CalenderCell: UITableViewCell {

    @IBOutlet var lblDay: UILabel!
    @IBOutlet var lblRest: UILabel!
    @IBOutlet var imgCompleted: UIImageView!

    override func awakeFromNib()
    {
        super.awakeFromNib()
    }

    func updateCell(exerciseobject : Exercise)
    {
        let resttext = NSLocalizedString("restday", comment: "")
        let day = NSLocalizedString("day", comment: "")
        let dayexercise = "\(day) \(exerciseobject.exerciseDayID)"

        if !exerciseobject.exerciseRestDay
        {
            lblDay.text = dayexercise
            if exerciseobject.exerciseDayStatus
            {
                imgCompleted.isHidden = false
            }
            else
            {
                imgCompleted.isHidden = true
            }
            lblRest.isHidden = true

        }
        else
        {
            lblDay.isHidden = true
            imgCompleted.isHidden = true
            lblRest.text = resttext
            viewWithTag(100)?.backgroundColor = UIColor(red:1.00, green:0.21, blue:0.28, alpha:1.0)
        }
    }
}

上面是我的自定义单元格class,下面是我的表格视图class。
当我尝试构建应用程序时,一切正常,但每当我快速滚动时,数据不匹配或相同的数据出现在更多单元格中。

我试过了:

prepareforreuse() 
{
  //clearing label and images here 
}

在我的自定义单元格中 class 但仍然出现快速滚动视图数据不匹配

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    if let cell = calenderTable.dequeueReusableCell(withIdentifier: "CalenderCell", for: indexPath) as? CalenderCell
    {

        cell.updateCell(exerciseobject: days[indexPath.row])
        return cell
    }

    else
    {
        return UITableViewCell()
    }
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
    return days.count
}

要么使用 prepareForReuse 并将控件重置为默认值,要么确保更新 updateCell 方法中每个路径的所有状态。

例如

func updateCell(exerciseobject : Exercise)
{
    let resttext = NSLocalizedString("restday", comment: "")
    let day = NSLocalizedString("day", comment: "")
    let dayexercise = "\(day) \(exerciseobject.exerciseDayID)"

    if !exerciseobject.exerciseRestDay
    {
        lblDay.text = dayexercise
        lblDay.isHidden = false
        if exerciseobject.exerciseDayStatus
        {
            imgCompleted.isHidden = false
        }
        else
        {
            imgCompleted.isHidden = true
        }
        lblRest.isHidden = true

        viewWithTag(100)?.backgroundColor = nil
    }
    else
    {
        lblDay.isHidden = true
        imgCompleted.isHidden = true
        lblRest.text = resttext
        lblRest.isHidden = false
        viewWithTag(100)?.backgroundColor = UIColor(red:1.00, green:0.21, blue:0.28, alpha:1.0)
    }
}