用图像填充自定义tableviewCell [英] filling up an custom tableviewCell with images

查看:43
本文介绍了用图像填充自定义tableviewCell的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试实现.目前,我有.

I am trying to achieve this. At the moment I have this.

到目前为止,我已经可以将图像放置在customTableViewCell中.但是,它总是在每行上放置相同的图像.我想要的是下一行拍摄下一张图像.

So I got it so far to place images in my customTableViewCell. But it always places the same images on each row. What I want is on the following row takes the next image.

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

I have a counter namely 'indexOfIndexPath'. And this is what I do in my 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;

有人知道如何解决此问题吗?

Anybody has an idea how to fix this?

提前谢谢吗?

推荐答案

如果我正确理解,那就想

If I understand it correctly, you want

  • 表第0行中的图像0、1、2、3、4、5,
  • 表格第1行中的图像6、7、8、9、10、11
  • ...等等.

这应该与以下代码一起使用:

That should work with the following code:

#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 中考虑:

Note that the number of table view rows is not the same as the number of rows in the fetched results controller, this must be considered in 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;
}

这篇关于用图像填充自定义tableviewCell的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆