En primer lugar, esta discusión no resolvió mi problema.Personalizado UITableViewCell me da: esta clase no es el valor clave que cumple con la codificación
Custom UITableViewCell subclass: This class is not a key value coding-compliant
Configuración:
Tengo una matriz de objetos Persona en MainViewController
. Quiere mostrar los objetos en un UITableView
en AllContactsViewController
.
Problema:
Todas las obras como se esperaba al utilizar el valor predeterminado UITableViewCell
. Cuando uso mi TableCell
personalizado obtengo un error apuntando a que esta clase no tiene valor clave que cumpla con la codificación.
Este error ocurre justo después de conectar CUALQUIERA de mis tres outlets
en IB
con mi clase TableCell
.
Nota:
TableCell
tiene tres propiedades: una etiqueta name
& email
+ imageView
.
Espero que pueda ayudar.
TableCell.h
#import <UIKit/UIKit.h>
@interface TableCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
@property (weak, nonatomic) IBOutlet UILabel *emailLabel;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
TableCell.m
#import "TableCell.h"
@implementation TableCell
@synthesize nameLabel, imageView, emailLabel;
AllContactsViewController.m
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdent = @"TableCell";
TableCell *cell = (TableCell *)[tableView dequeueReusableCellWithIdentifier:cellIdent];
if (cell == nil) {
NSArray *array = [[NSBundle mainBundle]loadNibNamed:@"TableCell" owner:self options:nil];
cell = [array objectAtIndex:0];
}
NSString *firstAndLastnameString =
[NSString stringWithFormat:@"%@ %@",
[(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] firstName],
[(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] lastName]];
cell.nameLabel.text = firstAndLastnameString;
cell.emailLabel.text =
[(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] eMail];
cell.imageView.image =
[(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] contactPicture];
return cell;
}
U PDATE:
Quizás una captura de pantalla ayude a IB.
Añadido AllContactsViewController completa.h
#import <UIKit/UIKit.h>
#import "VCDelegate.h"
#import "TableCell.h"
@interface AllContactsViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (weak, nonatomic) id <VCDelegate>delegate;
@property (weak, nonatomic) IBOutlet UITableView *allContactsTableView;
@property (strong, nonatomic) NSMutableArray *allContactsArray;
@property (assign) int currentArrayIndexNumber;
- (IBAction)closeBtnTapped:(id)sender;
@end
¿No se cumple el valor de clave para qué tecla? Proporcione el mensaje de error exacto. - ¿Verificaste que 'cell = [array objectAtIndex: 0]' en realidad devuelve una instancia de tu clase 'TableCell'? –
Depende de la 'salida' que conecto en IB. Conecto el 'nombre'' etiqueta', la aplicación falla, conecto el 'imageView' en lugar de la aplicación se bloquea. Parece que tengo un problema con TODAS las propiedades que he declarado en 'TableCell' Estoy seguro de que obtengo una instancia de' TableCell'; de lo contrario, el mensaje de error debe ser diferente ya que el error apunta a las salidas que tengo en 'TableCell' - Exact mensaje de error: '[ setValue: forUndefinedKey:]: esta clase no es un valor clave que cumpla con la codificación de la imagen imageView.'' –
El mensaje de error apunta a' AllContactsViewController'! Agregue 'NSLog (@" class =% @ ", [cell class]);' a su código para verificar. –