-2

UITableview と UICutsom セルが 1 つあります。その UITableview で、Web サービスを使用してデータを入力します。セルの背景色とフォント色を変更します。そのTableviewセルを上下にスクロールすると、別のセルでも背景色とラベルの色が変わります。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier = @"FieldInventoryCell";

    // UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    FieldInventoryCell *cell=(FieldInventoryCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    if (cell == nil) {

        NSArray *nib=[[NSBundle mainBundle] loadNibNamed:@"FieldInventoryCell" owner:self options:nil];

        cell=[nib objectAtIndex:0];
    }

    NSArray *ar = [[arr objectAtIndex:indexPath.row]componentsSeparatedByString:@"|"];
    cell.Status.text=[ar objectAtIndex:1];
    cell.serialnumber.text=[ar objectAtIndex:0];
    cell.date.text=[ar objectAtIndex:2];

    if([cell.serialnumber.text isEqualToString:@"Grand Total"])
    {

       cell.contentView.backgroundColor=[UIColor blueColor];
        cell.serialnumber.textColor=[UIColor whiteColor];

    }
     if ([cell.serialnumber.text isEqualToString:@"INV_FLD Status Total"])
    {
        //cell.contentView.backgroundColor=[UIColor blueColor];
        cell.serialnumber.textColor=[UIColor orangeColor];

    }


    return cell;

}
4

1 に答える 1

0

あなたの投稿から私が理解できる限り、おそらくあなたが経験している問題は、セルのデキューに関連しています。contentView とシリアル番号ラベルにいくつかの色を設定していますが、条件が満たされていない場合はそれらをリセットしていません。テーブルはセルを再利用するため、既に色付けされたアイテムが新しい要素に表示されます。問題を修正するには、色をデフォルトにリセットします。

// ...
if([cell.serialnumber.text isEqualToString:@"Grand Total"])
{

    cell.contentView.backgroundColor=[UIColor blueColor];
    cell.serialnumber.textColor=[UIColor whiteColor];

} else {
    // reset color
    cell.contentView.backgroundColor=[UIColor clearColor];
    cell.serialnumber.textColor=[UIColor blackColor];
}

if ([cell.serialnumber.text isEqualToString:@"INV_FLD Status Total"])
{
    //cell.contentView.backgroundColor=[UIColor blueColor];
    cell.serialnumber.textColor=[UIColor orangeColor];

} else {
    // reset color
    cell.serialnumber.textColor=[UIColor blackColor];
}
于 2013-10-16T13:01:55.223 に答える