Вы просто смотрите на teamName
слишком рано в процессе. К тому времени, когда cellForItemAt
достигает строки cell.teamName = ...
, метод init
ячейки уже был вызван. Таким образом, teamName
всегда будет пустым во время метода init
. Но, teamName
будет установлено до того, как ячейка появится в представлении.
Часто ячейки просто имеют элементы управления UIKit, такие как UILabel
, и вы устанавливаете text
из что, например
class TeamCell: UICollectionViewCell {
var teamLabel: UILabel = {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
override init(frame: CGRect) {
super.init(frame: frame)
configure()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func configure() {
addSubview(teamLabel)
NSLayoutConstraint.activate([
teamLabel.centerXAnchor.constraint(equalTo: centerXAnchor),
teamLabel.centerYAnchor.constraint(equalTo: centerYAnchor)
])
}
func update(for team: String) {
teamLabel.text = team
}
}
А затем
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellId", for: indexPath) as! TeamCell
cell.update(for: "Boston Celtics")
return cell
}