Cellule de style TableView dépendant d'une valeur dans un dictionnaire

J'essaie désespérément de comprendre comment je peux définir une cellule de style TableView dépendant d'une valeur dans un dictionnaire. Le dictionnaire est une ligne SQLite, et j'ai défini une colonne pour définir quelle cellule utiliser (la colonne Type) Cela devrait alors indiquer à cellForRowAtIndexPath quel style de cellule utiliser. Dans mon esprit, ce code ne devrait pas poser de problème, mais je reçois toujours l'erreur suivante:

Fin de l'application en raison d'une exception non interceptée   'NSInternalInconsistencyException', raison: 'UITableView dataSource   doit renvoyer une cellule de tableView: cellForRowAtIndexPath: '

Toute aide est la bienvenue! Merci beaucoup, Andrew

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
dictionary = [tableDataSource objectAtIndex:indexPath.row];

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    if ([dictionary objectForKey:@"Type"] == @"1") {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
        cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.textLabel.numberOfLines = 0;
        cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];
        cell.detailTextLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.detailTextLabel.numberOfLines = 0;
        cell.detailTextLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];
    }
    else if ([dictionary objectForKey:@"Type"] == @"0") {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.textLabel.numberOfLines = 0;
        cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:12.0];
    }

}
// Configure the cell...
cell.textLabel.text = [dictionary objectForKey:@"Title"];
cell.detailTextLabel.text = [dictionary objectForKey:@"Right_Info"];
return cell; }
0

1 Réponses

Pour comparer deux objets NSString , vous devez utiliser la méthode isEqualToString: . Avec l'opérateur == vous comparez les deux pointeurs.

De plus, dequeueReusableCellWithIdentifier: renvoie déjà une instance de UITableViewCell , donc vous ne devriez pas essayer d'en redistribuer un.

Si vous le souhaitez, consultez la Table Voir le guide de programmation . Ça ne fera pas mal.

0
ajouté