如何使用标签或标识符将多张图片添加到自定义 tableviewcells

Posted

技术标签:

【中文标题】如何使用标签或标识符将多张图片添加到自定义 tableviewcells【英文标题】:How to add multiple pictures to custom tableviewcells with tag or identifier 【发布时间】:2012-09-07 22:59:23 【问题描述】:

我想将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;

【问题讨论】:

【参考方案1】:

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

您需要找到一个函数,将indexPath 映射到imagePathArray 中的索引,该索引对应于您要放置在indexPath 所描述行的单元格中最左侧的图像。找到该索引后,剩下的三张图像只是从该索引偏移 1、2 和 3 个元素。

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

实现这样的方法:

- (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]];

希望这会有所帮助!

【讨论】:

不客气!这有助于解决问题还是您仍需要进一步的帮助? 是的,对我帮助很大。但它更简单: cell.imageForCell.image = [UIImage imageWithContentsOfFile:[imagePathArray objectAtIndex:(indexPath.row*1)]];和 cell.imageForCell.image = [UIImage imageWithContentsOfFile:[imagePathArray objectAtIndex:(indexPath.row*2)]];等等..

以上是关于如何使用标签或标识符将多张图片添加到自定义 tableviewcells的主要内容,如果未能解决你的问题,请参考以下文章

传单:如何将文本标签添加到自定义标记图标?

android 客户端开发 如何同时上传多张照片

将特色图片添加到自定义帖子类型

使用 PHPhotoLibrary 将照片添加到自定义文件夹还会将照片添加到相机胶卷

是否可以将 GestureRecognizer 添加到自定义 UIView 子视图中的标签

Vue CLI 3将eval功能预先添加到自定义模板标签