Erstellen einer UICollectionViewCell-Unterklasse mit xib [duplizieren]
Diese Frage hat hier bereits eine Antwort:
Was bedeutet das? "'NSUnknownKeyException', Grund:… diese Klasse ist nicht mit der Schlüsselwertcodierung für den Schlüssel X kompatibel." 66 AntwortenIch versuche eineUICollectionViewCell
Ich habe folgende Unterklasse mit einem XIB verknüpft: Ich habe eine neue XIB-Datei erstellt und eine hinzugefügtUICollectionViewCell
Darin habe ich dann folgende Unterklassendatei angelegt:
@interface MyCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UILabel *label;
@end
Auch habe ich im Dateibesitzer die benutzerdefinierte Klasse verlinktMyCell
Klasse in Interface Builder, und ich habe ein hinzugefügtUILabel
, dann in meinemUICollectionView
viewDidLoad mache ich das:
[self.collectionView registerClass:[MyCell class] forCellWithReuseIdentifier:@"MyCell"];
UINib *cellNib = [UINib nibWithNibName:@"MyCell" bundle:nil];
[self.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"MyCell"];
Sowie in diesem:
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
MyCell *cell = (MyCell*)[cv dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];
cell.label.text = @"Cell Text";
return cell;
}
Dies funktioniert jedoch nicht. Ich erhalte folgende Fehlermeldung:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x907eca0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key label.'
Was habe ich falsch gemacht? Wie kann ich eineUICollectionViewCell
Unterklasse zu einem xib, und zeigen Sie es in einemUICollectionView
?
BEARBEITEN:
Ich habe das getan:
- (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;
}