ios - Crear la subclase UICollectionViewCell con xib
iphone (2)
Esta pregunta ya tiene una respuesta aquí:
UICollectionViewCell
crear una subclase UICollectionViewCell
con un xib vinculado, tengo que hacer esto: he creado un nuevo archivo xib y he agregado un UICollectionViewCell
en él, luego he creado este archivo de subclase:
@interface MyCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UILabel *label;
@end
También he vinculado en la clase personalizada del propietario del archivo la clase MyCell
en el constructor de interfaz, y he agregado un UILabel
, luego en mi UICollectionView
viewDidLoad hago esto:
[self.collectionView registerClass:[MyCell class] forCellWithReuseIdentifier:@"MyCell"];
UINib *cellNib = [UINib nibWithNibName:@"MyCell" bundle:nil];
[self.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"MyCell"];
Además de en esto:
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
MyCell *cell = (MyCell*)[cv dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];
cell.label.text = @"Cell Text";
return cell;
}
Sin embargo, esto no funciona, recibo este error:
*** Terminating app due to uncaught exception ''NSUnknownKeyException'', reason: ''[<NSObject 0x907eca0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key label.''
¿Qué hice mal? ¿Cómo puedo conectar una subclase UICollectionViewCell
a un xib y mostrarla en un UICollectionView
?
EDITAR:
tengo hacer esto:
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
NSString *identifier = @"MyCell";
static BOOL nibMyCellloaded = NO;
if(!nibMyCellloaded)
{
UINib *nib = [UINib nibWithNibName:@"MyCell" bundle: nil];
[cv registerNib:nib forCellWithReuseIdentifier:identifier];
nibMyCellloaded = YES;
}
MyCell *cell = (MyCell*)[cv dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];
cell.labelCell.text = @"Text";
return cell;
}
Asegúrese de que la celda del archivo .xib sepa cuál es el tipo de la celda.
Seleccione la celda en su constructor de interfaz
y luego en el inspector de identidad
Posteriormente asocie sus etiquetas con sus propiedades. (Creo que ya lo hiciste)
Entonces recomendaría verificar si ya cargó el archivo .xib en su método cellForItemAtIndexPath:
NSString *identifier = @"MyCell";
static BOOL nibMyCellloaded = NO;
if(!nibMyCellloaded)
{
UINib *nib = [UINib nibWithNibName:@"MyCell" bundle: nil];
[cv registerNib:nib forCellWithReuseIdentifier:identifier];
nibMyCellloaded = YES;
}
Puede encontrar la respuesta en este documento UICollectionView agregando UICollectionCell .
Solo UICollectionView dentro de StoryBoard tiene UICollectionViewCell adentro. Si usa XIB, cree un nuevo XIB con CellName.xib, agregue CollectionViewCell, especifique el nombre de la clase personalizada UICollectionView. Después de eso, use el código registerNib.Sample: https://github.com/lequysang/TestCollectionViewWithXIB