在自定义UITableviewCell中设置图像不会*粘*

时间:2012-06-24 20:15:33

标签: ios uitableview

我有一个自定义UITabvleViewCell,里面有UIImageView。我可以在cellForRowAtIndexPath中设置单元格时将图像设置得很好(尽管我不这样做)但是在某些条件下我需要更改图像并且使用以下代码执行此操作。

-(void)updateCellForUPC
{
    AppData* theData = [self theAppData];

    NSInteger cellIndex;
    for (cellIndex = 0; cellIndex < [productArray count]; cellIndex++) {

      NSString *cellUPC = [NSString stringWithFormat:@"%@",[[productArray objectAtIndex:cellIndex] objectForKey:@"UPC"]];

        if ([cellUPC isEqualToString:theData.UPC]) {

            OrderDetailCell *activeCell = [[OrderDetailCell alloc] init];
            activeCell = (OrderDetailCell *) [orderDetailTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:cellIndex inSection:0]];

            UIImage* image = [UIImage imageNamed:@"checkmark.png"];
            activeCell.statusImageView.image = image;
            activeCell.checked = YES;
        }
    }
}

这样可以工作并且图像会更新,但是当您将单元格从屏幕滚动并返回到屏幕时,图像会重置!

我需要它坚持使用新图像。

2 个答案:

答案 0 :(得分:1)

不建议这样做,因为您没有获得未使用单元格的出队机制的好处。在创建单元格时考虑这样做,或者创建一个机制来知道应该对哪些单元格进行操作。

答案 1 :(得分:0)

对于任何对我今后如何做到这一点感兴趣的人。

我制作了一个NSMutableArray并将索引添加为NSString ..如果当时正在显示该单元格,我还会为其设置图像。

-(void)updateCellForUPC
{
    AppData* theData = [self theAppData];

    NSInteger cellIndex;
    for (cellIndex = 0; cellIndex < [productArray count]; cellIndex++) {

      NSString *cellUPC = [NSString stringWithFormat:@"%@",[[productArray objectAtIndex:cellIndex] objectForKey:@"UPC"]];

        if ([cellUPC isEqualToString:theData.UPC]) {

            OrderDetailCell *activeCell = [[OrderDetailCell alloc] init];
            activeCell = (OrderDetailCell *) [orderDetailTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:cellIndex inSection:0]];

            UIImage* image = [UIImage imageNamed:@"checkmark.png"];
            activeCell.statusImageView.image = image;

            NSString *index = [NSString stringWithFormat:@"%d",cellIndex];
            [selectionArray addObject:index];
        }
    }
}

然后在我的cellForRowAtIndexPath中,我只使用以下代码检查索引是否在数组中,如果是,则设置我的图像。这样,当重新绘制(滚动)单元格时,它具有图像。

NSString *index = [NSString stringWithFormat:@"%d",indexPath.row];

if ([selectionArray containsObject:index]) {
    UIImage* image = [UIImage imageNamed:@"checkmark.png"];
    cell.statusImageView.image = image;
}