2011-05-12 8 views
0

私が作成したカスタムTableViewCellがあります。各セルには、異なる色にしたい2つのUIラベルがあります。また、私は別の背景色とテキストの色をしたい私のtableViewの1つのセクションがあります。uitableviewcellプロパティのオーバーライドで問題が発生しました

今、私のUILabel.textColorを使用してテキストの色を変更することはできません。私はcell.textLabel.textColorで動作するようにしましたが。また、cell.background色が機能しません。

私は下のswitch文の中でそれを行うと、セルのプロパティの変更を有効にすることができましたが、セルのプロパティが適切にdequeしないので、上下にスクロールしてランダムセルが白いテキストになります赤い背景。

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

    UILabel* itemLabel; 
    UILabel* amountLabel; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

    itemLabel = [[[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 220.0, 35.0)] autorelease]; 
    itemLabel.tag = ITEMLABEL_TAG; 
    itemLabel.font = [UIFont systemFontOfSize:14.0]; 
    itemLabel.textAlignment = UITextAlignmentLeft; 
    itemLabel.autoresizingMask = UIViewAutoresizingNone; 
    itemLabel.backgroundColor = [UIColor clearColor]; 
    itemLabel.textColor = [UIColor blueColor]; //This doesn't work 

    if (indexPath.section == 4) 
    { 
     cell.textLabel.textColor = [UIColor whiteColor]; //This works 
     cell.backgroundColor = [UIColor redColor]; //This doesn't work 
    } 
    [cell.contentView addSubview:itemLabel]; 

    cell.backgroundColor = [UIColor whiteColor]; 

    amountLabel = [[[UILabel alloc]initWithFrame:CGRectMake(225.0, 0.0, 55.0, 35.0)] autorelease]; 
    amountLabel.tag = AMOUNTLABEL_TAG; 
    amountLabel.font = [UIFont systemFontOfSize:14.0]; 
    amountLabel.textAlignment = UITextAlignmentLeft; 
    amountLabel.textColor = [UIColor blackColor]; //This doesn't work 
    amountLabel.backgroundColor = [UIColor clearColor]; 
    amountLabel.autoresizingMask = UIViewAutoresizingNone; 
    [cell.contentView addSubview:amountLabel]; 


    switch (indexPath.section) { 
     case 0: 
      cell.textLabel.text = [monthlyExpenses objectAtIndex:indexPath.row]; 
      break; 
     case 1: 
      cell.textLabel.text = [oneTimeFees objectAtIndex:indexPath.row]; 
      break; 
     case 2: 
      cell.textLabel.text = [renters objectAtIndex:indexPath.row]; 
      break; 
     case 3: 
      cell.textLabel.text = [travelExpenses objectAtIndex:indexPath.row]; 
      break; 
     case 4: 
      cell.textLabel.text = @"Generate Report"; 
      break; 
    } 

return cell; 
} 

答えて

0

あなたは、テーブルセルを表示する直前にカスタマイズを行うことができます場所です- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

でセルの背景色を変更する必要があります。

関連する問題