UICollectionView 重叠标签

UICollectionView overlapping labels

我正在使用 collectionview,第一次数据加载工作正常。当标签重叠时第二次加载数据时会出现问题,因为旧标签似乎仍然存在。 下面是我的 collectionview 代码,在此先感谢。

          func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
                let customCell = collectionView.dequeueReusableCell(withReuseIdentifier: "customCellIdentifier", for: indexPath)
                customCell.layer.borderColor = UIColor.black.cgColor
                customCell.layer.borderWidth = 1


    // changed these lines here
                if cellsLabels[indexPath.row] != nil {
                    customCell.willRemoveSubview(cellsLabels[indexPath.row]!)
                }
    //to these lines here and the problem was solved
            let maybe = customCell.subviews

            for i in 0 ..< maybe.count {
                maybe[i].removeFromSuperview()
            }
                let c

ommentLabel = UILabel()
            commentLabel.text = commentsArray[indexPath.row]
            commentLabel.frame = CGRect(x: 0, y: 50, width: 200, height: 30)
            customCell.addSubview(commentLabel)

            self.cellsLabels[indexPath.row] = commentLabel

            if indexPath.row == commentLoadTracker*10 - 1 {
                print("working doomfist")
            }

            return customCell
        }

        func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

            return commentsArray.count
        }

        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
            var cellSize = CGSize()
            cellSize.width = self.commentView.frame.width
            cellSize.height = 100
            return cellSize
        }

customCell.willRemoveSubview

您正在呼叫 willRemoveSubiew 而不是 removeFromSuperview

if cellsLabels[indexPath.row] != nil {
    cellsLabels[indexPath.row]!.removeFromSuperview()
}

不需要调用willRemoveSubview,UIKit会帮你调用,它存在就是为了可以

Overridden by subclasses to perform additional actions before subviews are removed from the view.