0

我有一个自定义的 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;
        }
    }
}

这有效,并且图像会更新,但是当您将单元格从屏幕上滚动并返回到屏幕上时,图像会被重置!

我需要它来*坚持新形象。

4

2 回答 2

1

不建议这样做,因为您没有从未使用单元的出列机制中受益。在创建单元时考虑这样做,或者创建一个知道应该对哪些单元执行此操作的机制。

于 2012-06-24T20:22:43.953 回答
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;
}
于 2012-06-25T01:18:11.353 回答