如何防止不同 Swift 单元格的标签显示在彼此之上?

How does one prevent labels of different Swift cells displaying on top of each other?

Screenshot of the double text label

Current constraints of the label

Complete Hirearchy

目前我的相关代码是什么

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    
    
    if let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? ViewControllerTableViewCell {
        let immy = cell.viewWithTag(1) as? UIImageView
        let person: Userx = people[indexPath.row]
        let text = person.Education
        
        cell.lblName.text = person.Education. ///key line
        cell.lblName.text = text?.uppercased()
        cell.lblName?.layer.masksToBounds = true
       
        let person5 = colorArray[indexPath.row]
        let person6 = colorArray1[indexPath.row]
        let person7 = colorArray2[indexPath.row]
        
    
        let like = cell.viewWithTag(3) as? UIButton
        
        cell.backgroundColor = person5
        like?.backgroundColor = person6
        immy?.backgroundColor = person7
        
        cell.lblName.baselineAdjustment = .alignCenters
        cell.postID = self.people[indexPath.row].postID
        
        cell.row = indexPath.row
        cell.delegate = self
        cell.delegate2 = self
        
        DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
            like?.isUserInteractionEnabled = true
        }
        return cell
    }
    return UITableViewCell()
}

我尝试了什么:

为了复用准备,我试了lblName.text = "" and lblName.text = nil没用。

我也在 cellForRowAt:

中尝试过
 cell.lblName.text = nil
 if cell.lblName.text == nil{
 cell.lblName.text = person.Education
}

我也试过通过约束来完成它,没有运气。

我认为可能是什么原因

在我从 TableViewController 场景更改为 ViewController(with an output table) 场景之前,这并没有发生。

在我将单元格设置为具有不同颜色之前也没有发生。

我认为如果您检查单元格高度,您的问题就会解决, 检查 heightForCellAtRow Func

我没在你的小区看到过class。当您遇到约束问题时,就会发生该问题。由于自动布局系统无法计算行的高度,因此高度变为 0,从该点开始的任何更改都可能是错误的。

我建议您检查单元格代码,将标签添加到 contentView(如果不是)并在它们之间添加约束:

例如:

bottomLabel.topAnchor.constraint(equalTo: topLabel.bottomAnchor, constant: 8).isActive = true

同时将两个标签的压缩阻力设置为 .defaultHigh,如果您对行的高度进行了硬编码,请将其删除。

我通过检查 label2 上的清晰图形上下文使其工作。