2

iOS7 にアップグレードしてから、特定のテーブルビュー セルの背景色を変更しようとすると、正しいセル (通常は他のセルに加えて指定されたセル) が色付けされないという問題が発生しています。以下のコードからわかるように、強調表示するタイプを定義してから、色を変更します。iOSのアップグレード前は完全に機能していたので、これを引き起こしている変更が正確にはわかりません:

クイック編集:また、テーブルビューを下にスクロールしてから戻ると、テーブルビューコントローラーが最初にロードされたときに色付けされていなかったセルがさらに色付けされます(それが役立つ場合)。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString* type=[[self.HandPointer.player_hand objectAtIndex:indexPath.row]cardType];
    if ([type isEqualToString:@"ace"]){
        cell.backgroundColor = [UIColor colorWithRed:0.81 green:0.91 blue:0.81 alpha:1.0];
    }
}
4

2 に答える 2

4

tableView: cellForRowAtIndexPath:メソッドでセルのカスタマイズを行う方が良いと思います。この方法では、

if ([type isEqualToString:@"ace"])
{
    cell.backgroundColor = [UIColor aceColor];
}
else // this else is important. If you add this, scrolling works fine.
{
    cell.backgroundColor = [UIColor otherCellColor];
}
于 2013-09-30T17:14:12.533 に答える
0

再利用可能なセル スタイルが 1 つある可能性があります。エース用に再利用可能なセル スタイルを用意し、他のすべてのエース用に 1 つ用意することを検討してください。willDisplayCell ではなく、cellForRowAtIndexPath で背景色を設定します。

疑似コード:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
.
.
. 
 NSString* type=[[self.HandPointer.player_hand objectAtIndex:indexPath.row]cardType];
 if ([type isEqualToString:@"ace"]){
 {
  // load a cell with the background color desired
  cell = 
  cell.backgroundColor = 
  .
  .
  .
  return (cell);
 }

 // else a normal cell
 cell = 
 .
 .
 .
}
于 2013-09-30T17:07:26.070 に答える