Я создал пользовательский UICollectionViewCell в Интерфейсном Разработчике, связал представления этого класса с классом, а затем, когда я хочу использовать и установить строку для метки в строке, метка имеет нулевое значение.
override func viewDidLoad() {
super.viewDidLoad()
// Register cell classes
self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls")
}
override func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! {
var cell: LeftMenuCollectionViewCell
cell = collectionView.dequeueReusableCellWithReuseIdentifier("ls", forIndexPath: indexPath) as LeftMenuCollectionViewCell
println(cell.label) // <- this is nil, why??
cell.label.text = "asd"
return cell
}
И подклассная клетка:
class LeftMenuCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var label: UILabel!
@IBOutlet weak var activityIndicatorView: UIActivityIndicatorView!
}
Ответы:
Я
self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls")
снова звоню . Если вы используете раскадровку, вы не хотите называть это . Это перезапишет то, что у вас есть в вашей раскадровке.Если у вас есть чек проблемы кастрированный баран
reuseIdentifier
это же вdequeueReusableCellWithReuseIdentifier
и вstoryboard
.источник
Просто удалите эту строку:
источник
Если вы используете xib, убедитесь, что вы добавили эту строку кода в свою viewdidload.
Цель C:
Swift:
источник
Должен зарегистрироваться, что ребята!
источник
Похоже, есть два способа регистрации, и я первым использовал неправильный. У меня есть пользовательское представление xib, поэтому зарегистрировано со вторым параметром, и у нас есть данные!
1:
2:
источник
У меня была похожая проблема, но моя ошибка заключалась в том, что я не делегировал CollectionViewCell возможность изменять текст метки.
источник
Я думаю, что лучшим решением является непосредственное использование из раскадровки, где добавляется
CollectionView
, альтернативно, вам нужно удалитьCollectionViewCell
со своегоCollectionView
в раскадровке и зарегистрировать ячейку с помощью следующей команды:источник