0

我有一个 UITable,我想在单元格的左侧添加照片。这些照片目前来自我的 showStream 方法(参见下面的代码)。所有照片都被添加到我的 UITable 的第一个单元格中。如何将每张照片添加到单个单元格中,以便 UITable 中的每个单元格显示其中一个图像(由行分隔的图像)?我可以调用 UITableViewCell 方法并以某种方式在每一行中放置一张照片吗?

-(void)showStream:(NSArray*)stream 

{
// 1 remove old photos
for (UIView* view in _tableView.subviews) 
{
    [view removeFromSuperview];
}

// 2 add new photo views
for (int i=0;i<[stream count];i++) 
    {

    NSDictionary* photo = [stream objectAtIndex:i];
    PhotoView* photoView = [[PhotoView alloc] initWithIndex:i andData:photo];
    photoView.delegate = self;

// 这里我设置单元格 UITableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];

    if (cell == nil) {


        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"];

        cell.selectionStyle = UITableViewCellSelectionStyleNone;

        NSMutableArray *array = [[NSMutableArray alloc] init];
        [array addObject:photo];

    }
}

这是 tableView 方法....我可以在问号所在的地方传递一些东西吗?

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

can I get the photo array inside this method?

    }



return cell;
}
4

1 回答 1

1

您需要将图像保存在NSArray或类似文件中,因为您必须将单元格配置为cellForRowAtIndexPath:. 每当重新加载表视图时,它都会调用cellForRowAtIndexPath:并且它期望单元格返回与提供的索引路径合适的内容。

您可以设置您的每个单元格,showStream:但将所有图像保存在那里然后reloadData最后保存要容易得多。然后,您不需要对表格视图进行任何预先设置来告诉它它有多少行+部分,对您尝试更新的行进行任何可见性检查(以确保单元格显示), ... - 重用表格视图提供的功能...

更像是:

showStream:(将所有新视图存储到数组 photoList 中)

self.photoList = [[NSMutableArray alloc] init];

NSDictionary* photo = [stream objectAtIndex:i];
PhotoView* photoView = [[PhotoView alloc] initWithIndex:i andData:photo];
photoView.delegate = self;

[self.photoList addObject photoView];

cellForRowAtIndexPath:(如果需要,创建单元格,清理单元格,添加照片视图)

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
}

[cell.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

[cell.contentView addSubview:[self.photoList objectAtIndex:indexPath.row]];
于 2013-05-27T16:39:50.873 回答