2 différents types de UITableViewCells personnalisés dans UITableView

dans ma UITableView, je veux définir pour la première actualité d’un stream RSS une tableViewCell personnalisée (Type A, disons) et pour les autres, deuxièmes, troisièmes, etc. trype A) créé pour la première news est réutilisé, mais curieusement le nombre de lignes entre la première utilisation de customViewCell (type A) et la seconde apparition du même type de customViewCell n’est pas égal ..

my cellForRowAtIndexPath ça ressemble à ça.

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ int feedIndex = [indexPath indexAtPosition:[indexPath length] - 1]; Feed *item = [[[[self selectedButton] category] feedsList] objectAtIndex:feedIndex + 1]; static NSSsortingng *CellIdentifier = @"Cell"; if(feedIndex == 0){ MainArticleTableViewCell *cell = (MainArticleTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[MainArticleTableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; [[[cell subviews] objectAtIndex:0] setTag:111]; } cell.feed = item; return cell; } else{ NewsTableViewCell *cell = (NewsTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[NewsTableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier orientation:currentOrientation] autorelease]; [[[cell subviews] objectAtIndex:0] setTag:111]; } cell.feed = item; return cell; } return nil; } 

les deux types de cellules ont des hauteurs différentes qui sont définies correctement. Quelqu’un pourrait-il m’orienter dans la bonne direction sur la façon de rendre le type Une cellule personnalisée à apparaître uniquement pour les premières nouvelles (ne pas être réutilisé)? Je vous remercie

Vous devez créer un identifiant de cellule différent pour les deux styles de cellule:

 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ int feedIndex = [indexPath indexAtPosition:[indexPath length] - 1]; Feed *item = [[[[self selectedButton] category] feedsList] objectAtIndex:feedIndex + 1]; static NSSsortingng *CellIdentifier1 = @"Cell1"; static NSSsortingng *CellIdentifier2 = @"Cell2"; if(feedIndex == 0) { MainArticleTableViewCell *cell = (MainArticleTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier1]; if (cell == nil) { cell = [[[MainArticleTableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier1] autorelease]; [[[cell subviews] objectAtIndex:0] setTag:111]; } cell.feed = item; return cell; } else { NewsTableViewCell *cell = (NewsTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier2]; if (cell == nil) { cell = [[[NewsTableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier2 orientation:currentOrientation] autorelease]; [[[cell subviews] objectAtIndex:0] setTag:111]; } cell.feed = item; return cell; } return nil; } 

Je ne comprends pas tout à fait votre question, mais j’ai remarqué deux choses curieuses. Si vous utilisez deux types de cellules différents, vous devez utiliser deux identificateurs de cellule distincts lorsque vous appelez «dequeueReusableCellWithIdentifier». Vous utilisez actuellement le même identifiant pour les deux, ce qui est incorrect. Essayez quelque chose comme:

 static NSSsortingng *MainArticleIdentifier = @"MainArticle"; static NSSsortingng *NewsIdentifier = @"News"; 

Aussi, je n’ai jamais rien vu de tel:

 int feedIndex = [indexPath indexAtPosition:[indexPath length] - 1]; 

Pourquoi ne pas simplement utiliser:

 int feedIndex = indexPath.row; 

dans cellForRowAtIndexPath

 if ("Condition for cell 1") { cellV = ("customCell" *)[tableView dequeueReusableCellWithIdentifier:@"your ID cell in .xib"]; if (cellV == nil) { [[NSBundle mainBundle] loadNibNamed:@"YOUR-CELL-FILENAME" owner:self options:nil]; cellV = "OUTLET-CEll-IN-VC"; } } else { cellV = ("customCell" *)[tableView dequeueReusableCellWithIdentifier:@"your ID cell2 in .xib"]; if (cellV == nil) { [[NSBundle mainBundle] loadNibNamed:@"YOUR-CELL2-FILENAME" owner:self options:nil]; cellV = "OUTLET-CEll-IN-VC"; } } [self configureCell:cellV indexpath:indexPath withClipVo:clip]; return cellV;