无法将 UILabel 添加到 UICollectionViewCell
Posted
技术标签:
【中文标题】无法将 UILabel 添加到 UICollectionViewCell【英文标题】:Can't add UILabel to UICollectionViewCell 【发布时间】:2018-02-03 19:04:43 【问题描述】:我正在尝试将 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()
虽然没有出现错误,但是标签并没有出现在单元格中。
我错过了什么吗?
【问题讨论】:
【参考方案1】:错误在这里
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as? VideoCell else
fatalError("Wrong instance for dequeued cell")
您必须使用 cellForItemAtIndexPath 来返回该单元格,而不是通过出队方式
【讨论】:
【参考方案2】:详细说明@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()
【讨论】:
以上是关于无法将 UILabel 添加到 UICollectionViewCell的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式将 UILabel 和 UIImageViews 添加到 UIScrollView
无法在 IOS 6 中将 UILabel 添加到 UITableViewCell
无法从 UILabel 切换到 ViewController