2013-09-30 5 views
2

У меня возникла проблема, возникшая с момента обновления до iOS7, в которой при попытке изменить цвет фона определенной ячейки таблицы, он не окрашивает правильные ячейки (обычно указанные в дополнение к другим). Как вы можете видеть из моего кода ниже, я определяю тип, который я хочу выделить, а затем изменить цвет. Он отлично работал до обновления iOS, поэтому я не совсем уверен в том, какие изменения были сделаны, что вызвало это:Изменение цвета фона ячейки таблицы в iOS7

Быстрое редактирование: также, когда я прокручиваю вниз по экрану, а затем создаю резервную копию, он окрашивает больше ячеек, которые weren Когда цветной контроллер таблицы сначала загружается (если это вообще помогает).

- (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

Я думаю, что делает настройку ячейки в 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]; 
} 
+1

Да! Решение проблемы «else» решило проблему. Но почему метод tableView: cellForRowAtIndexPath лучше? –

+0

Конечно, это не правило, но в целом этот метод используется для настройки ячеек. – caglar

+0

Я тоже хотел бы понять, что это касается рамки iOS, которая вызывает проблемы, если настройка помещается в willDisplayCell –

0

Возможно, у вас есть один стиль использования, который можно использовать повторно. Подумайте о том, что для ваших тузов можно использовать повторно используемый стиль ячеек, а другой для всех остальных. Установите цвет фона в cellForRowAtIndexPath, а не наDisplayCell.

псевдо-код:

- (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 = 
. 
. 
. 
} 
Смежные вопросы