У меня есть тестовое приложение с UICollectionView, которое правильно рисует его ячейки, когда они впервые появляются на экране, но накладывает текст ярлыка на новый текст, который изменяется и устанавливается по-разному, когда ячейка прокручивается и возвращается на экран.UICollectionView перезаписывает метку ячейки при прокрутке экрана и обратно на
Вот как это выглядит, когда открывается приложение:
Вот как это выглядит после прокрутки и выключение:
Это код, который dequeues ячейки и добавляет метку:
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)
Я думаю, проблема заключается в том, что она всегда идет в случай «else», поэтому она просто добавляет больше ярлыков в ячейку, и они перекрывают друг друга. – almas
перестают добавлять subviews в метод cellForRow. его создание снова и снова рассматривается в одной строке. Добавьте ярлык в ячейку в xib или initWithFrame: С помощью Cell выберете его через IBOutlets или viewWithTag: –