2010-10-12 4 views
1
- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *CustomCellIdentifier = @"CustomCellIdentifier"; 

    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CustomCellIdentifier]; 
    if (cell == nil) 
    { 
     //cell = [[[CustomCell alloc] initwithidentifier:CustomCellIdentifier] autorelease]; 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; 
     for (id oneObject in nib) 
      if ([oneObject isKindOfClass:[CustomCell class]]) { 
       cell = (CustomCell *)oneObject; 
      } 
    } 

    NSUInteger row = [indexPath row]; 
    NSDictionary *rowData = [self.listData objectAtIndex:row]; 
    cell.nameLabel.text = @"text"; 
    [cell.contentView addSubview: nameLabel]; 
    [cell reloadInputViews]; 

    return cell; 
} 

Mais le nomLabel ne s'affiche pas sous son nouveau nom. Qu'est-ce que je fais de mal s'il vous plaît ?? Merci!UITableViewCell n'affiche pas les données

+0

Qu'est-ce que le cadre nameLabels? Aussi, vous semblez ajouter nameLabel à la cellule en tant que sous-vue même si elle est déjà là. Ce code devrait probablement être dans la classe customcell à l'initialisation. Cela pourrait aussi être la raison pour laquelle vous ne voyez rien changer. – Ben

+0

Je viens d'ajouter cette ligne pour essayer de voir si cela fait une différence. Je ne pense pas que ce soit nécessaire - ni ici ni à l'initialisation – Lilz

Répondre

1

Je suis prêt à deviner que si vous inspectez cell.NameLabel, vous constaterez qu'il est nul - l'IBOutlet n'a pas été câblé correctement par loadNibNamed: owner: options :. Êtes-vous sûr que CustomCell a nameLabel comme sortie appropriée (c.-à-d., Qui peut être atteinte par le codage de valeur-clé)? La référence d'Apple pour cela est here, mais s'assurer que vous avez un setter et getter est suffisant.

Comme vous avez créé votre NIB, vous avez probablement raison de dire que CustomCell n'est pas le propriétaire du fichier? Si c'est alors loadNibNamed: owner: options: ne doit évidemment pas être appelé sur self. Et si 'self' est le propriétaire actuel, il peut être plus facile d'avoir un IBOutlet (également résolument compatible KVC) qui pointe vers le CustomCellView plutôt que de pêcher dans le tableau retourné.

AJOUTS, suite à la discussion de commentaire ci-dessous:

Ce qui fonctionne vraiment est de créer une sous-classe personnalisée de UITableViewCell avec IBOutlets appropriés qui sont également des propriétés, pour définir votre vue tableau source de données en tant que propriétaire du fichier et d'utiliser loadNib pour charger une nouvelle instance de la NIB avec votre classe en tant que cible, entraînant la connexion d'une nouvelle instance à votre point de vente. Vous pouvez ensuite utiliser les propriétés de la sous-classe pour accéder à diverses sous-vues de la cellule. Exemple de projet: here.

+0

non j'ai créé la sortie appropriée pour l'étiquette. La cellule apparaît - sans aucune valeur cependant – Lilz

+0

La sortie ne sera pas chargée à moins que le membre concerné ne soit conforme à la norme KVC, que vous l'ayez créée ou non, et que la vue s'affiche même sans sortie. Je vous recommande fortement de vérifier si vous obtenez zéro pour cell.NameLabel. – Tommy

+0

Je ne sais pas si je suis clair, la cellule apparaît avec tous les objets personnalisés à l'intérieur. En d'autres termes, j'ai un bouton, une vue de texte, une étiquette et une image. Tous ces éléments sont cependant nuls. Puisque ceux-ci apparaissent, la sortie a été configurée correctement, n'est-ce pas? – Lilz

Questions connexes