0

UIImageViewを含むカスタムUITabvleViewCellがあります。セルが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 に答える