Utworzyłem niestandardowy UICollectionViewCell w Interface Builder, powiązałem jego widoki z klasą, a następnie, gdy chcę użyć i ustawić ciąg na etykiecie na ciągu, etykieta ma wartość zerową.
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
}
I komórka podklasy:
class LeftMenuCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var label: UILabel!
@IBOutlet weak var activityIndicatorView: UIActivityIndicatorView!
}
Odpowiedzi:
Dzwonię
self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls")
ponownie. Jeśli używasz scenorysu, nie chcesz tego nazywać . Zastąpi to, co masz w swojej scenorysie.Jeśli nadal masz problem, czek pogoda
reuseIdentifier
jest taka sama wdequeueReusableCellWithReuseIdentifier
i wstoryboard
.źródło
Po prostu usuń tę linię:
źródło
Jeśli używasz xib, upewnij się, że dodałeś ten wiersz kodu do swojego viewdidload.
Cel C:
Szybki:
źródło
Muszę zarejestrować tych facetów od stalówek!
źródło
Wygląda na to, że istnieją dwa sposoby rejestracji, a ja użyłem niewłaściwego. Mam niestandardowy widok xib, zarejestrowany z drugą opcją i mamy dane!
1:
2:
źródło
Miałem podobny problem, ale moim błędem było to, że nie delegowałem CollectionViewCell, aby móc zmienić tekst etykiety.
źródło
Myślę, że najlepszym rozwiązaniem jest bezpośrednie użycie z storyboardu, gdzie dodaj a
CollectionView
, alternatywnie musisz usunąćCollectionViewCell
z twojegoCollectionView
w scenorysie i zarejestrować komórkę za pomocą następującego polecenia:źródło