remplir un tableviewCell personnalisé avec des images

J'essaie d'y parvenir. En ce moment j'ai ceci .

Donc je l'ai eu si loin de placer des images dans mon customTableViewCell. Mais il place toujours les mêmes images sur chaque ligne. Ce que je veux est sur la ligne suivante prend l'image suivante.

J'ai un countur à savoir 'indexOfIndexPath'. Et c'est ce que je fais dans mon CellForRowAtIndexPath.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSSsortingng *simpleTableIdentifier = @"PlayerCustomCell"; PlayerCustomCell *cell = (PlayerCustomCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; if (cell == nil) { NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PlayerCustomCell" owner:self options:nil]; cell = [nib objectAtIndex:0]; } if(indexPath.row == 0){ NSIndexPath *path = [NSIndexPath indexPathForRow:indexPath.row+_indexOfIndexPath inSection:0]; NSLog(@"%@",path); Team *team = [self.fetchedResultsController objectAtIndexPath:path]; if(!img1){ img1 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithSsortingng:team.image]]; UIImage* image = [[UIImage alloc] initWithData:img1]; [cell setImage:image forPosition:1]; _indexOfIndexPath++; } NSIndexPath *path1 = [NSIndexPath indexPathForRow:indexPath.row+_indexOfIndexPath inSection:0]; NSLog(@"%@",path1); Team *team1 = [self.fetchedResultsController objectAtIndexPath:path1]; if(!img2){ img2 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithSsortingng:team1.image]]; UIImage* image = [[UIImage alloc] initWithData:img2]; [cell setImage:image forPosition:2]; _indexOfIndexPath++; } NSIndexPath *path2 = [NSIndexPath indexPathForRow:indexPath.row+_indexOfIndexPath inSection:0]; NSLog(@"%@",path2); Team *team2 = [self.fetchedResultsController objectAtIndexPath:path2]; if(!img3){ img3 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithSsortingng:team2.image]]; UIImage* image = [[UIImage alloc] initWithData:img3]; [cell setImage:image forPosition:3]; _indexOfIndexPath++; } NSIndexPath *path3 = [NSIndexPath indexPathForRow:indexPath.row+_indexOfIndexPath inSection:0]; Team *team3 = [self.fetchedResultsController objectAtIndexPath:path3]; if(!img4){ img4 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithSsortingng:team3.image]]; UIImage* image = [[UIImage alloc] initWithData:img4]; [cell setImage:image forPosition:4]; _indexOfIndexPath++; }else{ img4 = [[NSData alloc] initWithContentsOfFile:@"keeperNil.jpg"]; UIImage* image = [[UIImage alloc] initWithData:img4]; [cell setImage:image forPosition:4]; } NSIndexPath *path4 = [NSIndexPath indexPathForRow:indexPath.row+_indexOfIndexPath inSection:0]; Team *team4 = [self.fetchedResultsController objectAtIndexPath:path4]; if(!img5){ img5 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithSsortingng:team4.image]]; UIImage* image = [[UIImage alloc] initWithData:img5]; [cell setImage:image forPosition:5]; _indexOfIndexPath++; } NSIndexPath *path5 = [NSIndexPath indexPathForRow:indexPath.row+_indexOfIndexPath inSection:0]; Team *team5 = [self.fetchedResultsController objectAtIndexPath:path5]; if(!img6){ img6 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithSsortingng:team5.image]]; UIImage* image = [[UIImage alloc] initWithData:img6]; [cell setImage:image forPosition:6]; _indexOfIndexPath++; } }else{ if(img1){ UIImage* image = [[UIImage alloc] initWithData:img1]; if(image == nil){ image = [image initWithContentsOfFile:@"keeperNil.jpg"]; }else{ [cell setImage:image forPosition:1]; } } if(img2){ UIImage* image = [[UIImage alloc] initWithData:img2]; if(image == nil){ image = [image initWithContentsOfFile:@"keeperNil.jpg"]; }else{ [cell setImage:image forPosition:2]; } } if(img3){ UIImage* image = [[UIImage alloc] initWithData:img3]; if(image == nil){ image = [image initWithContentsOfFile:@"keeperNil.jpg"]; }else{ [cell setImage:image forPosition:3]; } } if(img4){ UIImage* image = [[UIImage alloc] initWithData:img4]; if(image == nil){ image = [image initWithContentsOfFile:@"keeperNil.jpg"]; }else{ [cell setImage:image forPosition:4]; } } if(img5){ UIImage* image = [[UIImage alloc] initWithData:img5]; if(image == nil){ image = [image initWithContentsOfFile:@"keeperNil.jpg"]; }else{ [cell setImage:image forPosition:5]; } } if(img6){ UIImage* image = [[UIImage alloc] initWithData:img6]; if(image == nil){ image = [image initWithContentsOfFile:@"keeperNil.jpg"]; }else{ [cell setImage:image forPosition:6]; } } } return cell; 

Quelqu'un a une idée de comment résoudre ce problème?

Merci d'avance?

Si je comprends bien, vous voulez

  • images 0, 1, 2, 3, 4, 5 dans la rangée 0,
  • images 6, 7, 8, 9, 10, 11 dans la rangée de tableau 1,
  • … etc.

Cela devrait fonctionner avec le code suivant:

 #define IMAGES_PER_ROW 6 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSSsortingng *simpleTableIdentifier = @"PlayerCustomCell"; PlayerCustomCell *cell = (PlayerCustomCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; if (cell == nil) { NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PlayerCustomCell" owner:self options:nil]; cell = [nib objectAtIndex:0]; } NSInteger frcRow = indexPath.row * IMAGES_PER_ROW; // row in fetched results controller for (int col = 1; col <= IMAGES_PER_ROW; col++) { NSIndexPath *path = [NSIndexPath indexPathForRow:frcRow inSection:0]; Team *team = [self.fetchedResultsController objectAtIndexPath:path]; NSData *imgData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithSsortingng:team.image]]; UIImage *image; if (imgData == nil) { // default image image = [UIImage imageWithContentsOfFile:@"keeperNil.jpg"]; } else { image = [UIImage imageWithData:imgData]; } [cell setImage:image forPosition:col]; frcRow ++; } return cell; } 

Notez que le nombre de lignes de vue table n'est pas le même que le nombre de lignes dans le controller de résultats récupérés, cela doit être pris en count dans numberOfRowsInSection :

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section]; NSInteger count = [sectionInfo numberOfObjects]; return (count + IMAGES_PER_ROW - 1)/IMAGES_PER_ROW; } 

pourquoi ne mettez-vous pas vos images sur la condition comme,

 if(indexPath.row == 0) { Your first image.... } if(indexPath.row == 1) { Your second image.... }