我有一个带有UICollectionView的测试应用程序,当它们第一次出现在屏幕上时会正确地绘制它的单元格,但是用新的文本覆盖标签文本,当单元格在屏幕上滚动并返回时,它会以不同的方式放置。< / p>
以下是应用打开时的外观:
以下是滚动关闭后的外观:
这是使单元格出列并添加标签的代码:
func collectionViewTableLayoutManager(manager: DRCollectionViewTableLayoutManager!, collectionView: UICollectionView!, cellForRow row: UInt, column: UInt, indexPath: NSIndexPath!) -> UICollectionViewCell! {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(collectionViewCellIdentifier, forIndexPath: indexPath) as! UICollectionViewCell
cell.layer.borderColor = UIColor.blueColor().CGColor
cell.layer.borderWidth = 1
let subViews = cell.contentView.subviews
let labels = subViews.filter {$0 is UILabel } as! [UILabel]
let label: UILabel
if let lbl = labels.first {
label = lbl
} else {
label = UILabel(frame: cell.bounds)
label.font = UIFont.systemFontOfSize(10)
label.autoresizingMask = UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleWidth
label.textAlignment = NSTextAlignment.Center
label.backgroundColor = UIColor.clearColor()
cell.addSubview(label)
}
label.text = "\(indexPath.section):\(indexPath.row) / \(row):\(column)"
return cell
}
有什么想法吗?它是label.text行,并且单元格为IndexPath和行和列获取不同的值。我虽然保持同步,但正确地用正确的信息绘制单元格。 (这在Obj C中都可以正常工作)
答案 0 :(得分:2)
您正在直接向单元格添加标签,但检查单元格contentView
中是否存在标签。尝试将标签添加到单元格的contentView
,而它应该可以正常工作。
通常,如果您知道所有这些单元格都需要该标签,则应创建一个新单元格类,其中已包含自己的标签。这样,集合视图数据源不必检查单元格内容并有条件地创建标签;标签已经存在,等待接受字符串。