UITableView单元格textLabel颜色

我有一个UITableViewCell的简单问题。 我想要的是更改所选单元格的文本颜色。 在我的cellForRowAtIndexPath方法中,我设置:

 cell.textLabel.textColor = [UIColor whiteColor]; cell.selectionStyle = UITableViewCellSelectionStyleNone; cell.textLabel.highlightedTextColor = [UIColor orangeColor]; 

如果selectionStyleUITableViewCellSelectionStyleNone ,则highlightedTextColor不会改变。 所以我使用这两种方法来设置文本颜色:

 - (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView cellForRowAtIndexPath:indexPath].textLabel.textColor = [UIColor orangeColor]; return indexPath; } - (NSIndexPath *)tableView:(UITableView *)tableView willDeselectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView cellForRowAtIndexPath:indexPath].textLabel.textColor = [UIColor whiteColor]; return indexPath; } 

它可以工作,但滚动tableview时,颜色会变回。

通过在if(cell == nil)检查中设置颜色来获得解决方案

 if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier]; cell.textLabel.textColor = [UIColor whiteColor]; } 

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView cellForRowAtIndexPath:indexPath].textLabel.textColor = [UIColor orangeColor]; } - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView cellForRowAtIndexPath:indexPath].textLabel.textColor = [UIColor whiteColor]; } 

谢谢

你所要做的就是

 cell.textLabel.textColor = [UIColor whiteColor]; cell.selectionStyle = UITableViewCellSelectionStyleNone; cell.textLabel.highlightedTextColor = [UIColor orangeColor]; 

if if(cell == nil)

这将很好。

设置全局: int m_selectedCell; 修改它

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

只需添加

 if(m_selectedCell == indexPath.row){ ... ... }else{ } 

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath 

就这样 !