1

我想将图片从表格添加NSMutableArray到自定义单元格中。每个单元格中将有四个或更多图像。所以这是我的问题:

如果我指的indexPath.row是自定义单元格,它将如下所示:

单元格1:图片1、图片2、图片3、图片4 单元格2:图片2、图片3、图片4、图片5 单元格3:图片3、图片4、图片5

图片6

但我想要:

单元格1:图片1,图片2,图片3,图片4 单元格2 :图片5,
图片6,图片7,图片8 单元格3
:图片9,图片10,图片11,图片12

我是 xCode 的新手,我没有看到一个好的解决方案。

代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"ImageCustomCell";

    ImageCustomCell *cell = (ImageCustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"ImageCustomCell" owner:nil options:nil];

        for(id currentObject in topLevelObjects) {

            if ([currentObject isKindOfClass:[UITableViewCell class]]) {

                cell = (ImageCustomCell *) currentObject;

            break;
            }
        }
    }
// here i get the indexPath.row for every cell and add +1 - +3 to it to get the next image, but every new cell just get +1, not +4
    cell.imageForCell.image = [UIImage imageWithContentsOfFile:[imagePathArray objectAtIndex:indexPath.row]];
    cell.imageForCell2.image = [UIImage imageWithContentsOfFile:[imagePathArray objectAtIndex:indexPath.row+1]];
    cell.imageForCell3.image = [UIImage imageWithContentsOfFile:[imagePathArray objectAtIndex:indexPath.row+2]];
    cell.imageForCell4.image = [UIImage imageWithContentsOfFile:[imagePathArray objectAtIndex:indexPath.row+3]];
    return cell;
}
4

1 回答 1

1

您的问题是,虽然indexPath.row每次调用增加一个,tableView:cellForRowAtIndexPath:但编码好像增加了 4。当然,UITableView行索引增量应该并且将保持在每行一个,因此您必须找到一种不同的方法。

您需要找到一个函数,该函数映射到与您要放置在单元格中最左侧的图像对应indexPath的索引,该图像由. 一旦你找到那个索引,剩下的三个图像就是从那个位置偏移的 1、2 和 3 个元素。imagePathArrayindexPath

由于这没有标记为“作业”,我想我只会给你答案:它是行乘以每行的图像数量。您可以随意使用它,也可以使用这段代码。尚未编译或测试,如果您无法自行解决任何拼写错误或错误,请告诉我。

实现这样的方法:

- (NSArray *)imagePathsForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSInteger imagePathArrayStartingIndex = indexPath.row * IMAGES_PER_ROW;
    NSRange imagePathArrayIndexRange = NSMakeRange(imagePathArrayStartingIndex, IMAGES_PER_ROW);
    NSIndexSet *imagePathArrayIndexes = [NSIndexSet indexSetWithIndexesInRange:imagePathArrayIndexRange];
    NSArray *imagePathsForRow = [imagePathArray objectsAtIndexes:imagePathArrayIndexes];
    return imagePathsForRow;
}

然后更改您在其中设置单元格图像的行tableView:cellForRowAtIndexPath

NSArray *imagePathsForRow = [self imagePathsForRowAtIndexPath:indexPath];
cell.imageForCell.image  = [UIImage imageWithContentsOfFile:[imagePathsForRow objectAtIndex:0]];
cell.imageForCell2.image = [UIImage imageWithContentsOfFile:[imagePathsForRow objectAtIndex:1]];
cell.imageForCell3.image = [UIImage imageWithContentsOfFile:[imagePathsForRow objectAtIndex:2]];
cell.imageForCell4.image = [UIImage imageWithContentsOfFile:[imagePathsForRow objectAtIndex:3]];

希望这可以帮助!

于 2012-09-08T01:23:42.250 回答