2012-10-10 74 views
0

我试图实现this。 目前我有this用图像填充自定义tableviewCell

所以我到目前为止将图像放置在我的customTableViewCell中。但它总是在每一行放置相同的图像。我想要的是在下一行拍下下一张照片。

我有一个计数器,即'indexOfIndexPath'。这就是我在我的CellForRowAtIndexPath中所做的。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *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 URLWithString: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 URLWithString: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 URLWithString: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 URLWithString: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 URLWithString: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 URLWithString: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; 

有人有一个想法如何解决这个问题?

在此先感谢?

+0

看看MMGridView:https://github.com/provideal/MMGridView – alexandresoli

+0

你有每行5倍或6的图像? –

回答

1

如果我理解正确的话,你想

  • 图像0​​,1,2,3,4,5在表格第0行
  • 图片6,7,8,9,10,11在表格第1行
  • ...等等。

应该与下面的代码工作:

#define IMAGES_PER_ROW 6 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *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 URLWithString: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; 
} 

注意,表视图中的行数是不一样的,在获取结果控制器的行数,这一点必须在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; 
} 
+0

谢谢你这个作品!非常感谢你! – Steaphann

0

你为什么不把你的图像上的情况一样,

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