2014-09-16 2 views
1
Code: 
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

static NSString *cellIdentifier = @"cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
if(cell == nil){ 
    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
    cell.selectionStyle = UITableViewCellStyleDefault; 
} 
cell.contentView.backgroundColor = [UIColor clearColor]; 

cell.textLabel.text = @"testing"; 
if(indexPath.row == 1){ 
    cell.textLabel.textColor = UIColorMake(kOrangeColour); 
} 

return cell; 

}UITableView строки цвет меняется после прокрутки

У меня есть TableView с 14 строк в storyboard.I сделал изменить цвет 2 строки (IE1 индекса) .Когда я прокрутка вверх и вниз по Tableview для многих раз тогда я обнаружил, что цвет 14 строк (например, 13 индексов) также изменился. Теперь и строки 1 и 14 имеют оранжевый цвет. Как я закодировал, он должен изменить цвет только одной строки. Почему это происходит? Любая помощь будет оценена. заранее спасибо.

+0

UITableViewCells повторно используются во время прокрутки .. Поэтому вам нужно восстановить исходный текстColor вашей метки, если строка не равна 1. –

ответ

3

Использование

if(indexPath.row == 1){ 
    cell.textLabel.textColor = UIColorMake(kOrangeColour); 
} else { 
    cell.textLabel.textColor = [UIColor whiteColor]; // change is here 
} 

вместо

if(indexPath.row == 1){ 
    cell.textLabel.textColor = UIColorMake(kOrangeColour); 
} 

Во время повторного использования UITableViewCell, вы должны объявить if и else.

+0

Еще одна полезная информация для вас ... вы можете попробовать использовать замечательный класс генерации цвета https : //github.com/goppinath/GOExtendedUIColor с более чем 200 X11 определенными цветами, скорее определяющими UIColorMake(). – Goppinath

+0

он решил мою проблему – user3823935

Смежные вопросы