无法将UILabel添加到UICollectionViewCell

时间:2018-02-03 19:04:43

标签: ios swift uikit uilabel uicollectionviewcell

我正在尝试将UILabel添加到自定义UICollectionViewCell。在我的UICollectionViewCell上,我创建了一个方法,它将实例化并添加UILabel:

class VideoCell: UICollectionViewCell {

    func showOptions() {
        let label = UILabel(frame: CGRect(x: 0, y: 0, width: 50, height: 25))
        label.text = "test"
        contentView.addSubview(label)
    }

}

因此,当点击单元格时,我将调用此方法:

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as? VideoCell else {
        fatalError("Wrong instance for dequeued cell")
    }
    cell.showOptions()
}

虽然没有发生错误,但标签不会出现在单元格中。

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:2)

错误在这里

aws_acc_main

您必须使用cellForItemAtIndexPath返回该单元格而不是通过出列

答案 1 :(得分:1)

详细解释@Sh_Khan的答案代码应如下所示: -

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as? VideoCell
    return cell ?? UICollectionViewCell()
}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    guard let cell = collectionView.cellForItem(at: indexPath) as? VideoCell else {
        fatalError("Wrong instance for dequeued cell")
    }
    cell.showOptions()
}