Wdrażam niestandardowy UICollectionViewCell, i chcę wiedzieć, jak wysłać dane modelu do niego, aby dane mogły zostać wykorzystane do zainicjowania subviews komórki.Podklasa iOS Metoda niestandardowa init UICollectionViewCell
zarejestrować moją MyCollectionViewCell wykonując ..
[self.collectionView registerClass:[MyCollectionViewCell class] forCellWithReuseIdentifier:@"MyCell"];
oraz w następujący sposób, robię ...
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
MyCollectionViewCell* cell = [self.collectionView dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];
Problem jestem stoi to, gdy komórka ISN” t w kolejce ponownego użycia inicjuje nową komórkę, wywołując metodę initWithFrame (co powinno się potwierdzić w dokumentacji). Jednak mam niestandardową metodę init, w mojej klasie MyCollectionViewCell, który jest ...
-(id) initWithFrame:(CGRect)frame withData: (NSDictionary*) data;
chcę mój zwyczaj zainicjować metodę można nazwać zamiast. Jak to zrobić? Nie używam żadnych stalówek i robię wszystko programowo.
Jeśli nie ma sposobu, i muszę zamiast tego użyć metody initWithFrame, w jaki inny sposób mogę przekazać dane modelu do MyCollectionViewCell, aby móc zainicjować subviews z tymi danymi?
Dzięki!
To. Jeśli ponownie używasz komórki, nie przekazałeś initWith ... nic, więc konfiguracja danych powinna być oddzielona od metody init. – jrturton
Poza tym nie nazwij go initData. Nazwij to configureForData lub setData (jeśli dane są właściwością) coś. init ... metody powinny być wywoływane tylko na nowo przydzielonych obiektach. – jrturton
To ma sens. Po wywołaniu setData i przekazaniu danych modelu, w jaki sposób mogę uruchomić komórkę, aby ponownie załadować "interfejs użytkownika? Czy mogę wywołać metodę setNeedsLayout i zastosować metodę - (void) layoutSubviews w mojej komórce niestandardowej? –