我有一个tableview,我想知道如何更改所选行的文本颜色,比如Red?我试过这段代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell= [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:nil] autorelease];
cell.text = [localArray objectAtIndex:indexPath.row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
cityName = [localArray objectAtIndex:indexPath.row];
UITableViewCell* theCell = [tableView cellForRowAtIndexPath:indexPath];
theCell.textColor = [UIColor redColor];
//theCell.textLabel.textColor = [UIColor redColor];
[tableView deselectRowAtIndexPath:indexPath animated:NO];
}
(1)当我选择任何行时,文本颜色变为红色,但当我选择另一行时,之前选择的行的文本保持红色。我该怎么解决这个问题?
(2)当我滚动表文本颜色变为黑色时如何解决这个问题?
谢谢..
答案 0 :(得分:201)
在tableView:cellForRowAtIndexPath:
中执行此操作:
cell.textLabel.highlightedTextColor = [UIColor redColor];
(并且不再使用cell.text = ...
。现在已经弃用了近2年。请改用cell.textLabel.text = ...
。)
如评论中提到的Raphael Oliveira,如果您的单元格的selectionStyle等于UITableViewCellSelectionStyleNone
,则无效。检查故事板以及选择样式。
答案 1 :(得分:4)
如果您只想更改文本颜色,而不更改单元格背景颜色。你可以使用它。在cellForRowAtIndexPath方法中编写这段代码
UIView *selectionColor = [[UIView alloc] init];
selectionColor.backgroundColor = [UIColor clearColor];
cell.selectedBackgroundView = selectionColor;
cell.textLabel.highlightedTextColor = [UIColor redColor];
答案 2 :(得分:1)
我有同样的问题,试试这个!
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
for (id object in cell.superview.subviews) {
if ([object isKindOfClass:[UITableViewCell class]]) {
UITableViewCell *cellNotSelected = (UITableViewCell*)object;
cellNotSelected.textLabel.textColor = [UIColor blackColor];
}
}
cell.textLabel.textColor = [UIColor redColor];
[tableView deselectRowAtIndexPath:indexPath animated:NO];
}
这可能是你(和我的)问题的解决方案。
答案 3 :(得分:0)
如果您已经对UITableViewCell
进行了子类化,那么在awakeFromNib
方法中设置颜色会更容易/更清晰(假设您从故事板或xib实例化)。
@implementation MySubclassTableViewCell
- (void)awakeFromNib {
[super awakeFromNib];
self.selectedBackgroundView = [[UIView alloc] initWithFrame:self.frame];
self.selectedBackgroundView.backgroundColor = [UIColor colorWithRed:0.1 green:0.308 blue:0.173 alpha:0.6];
self.customLabel.highlightedTextColor = [UIColor whiteColor];
}
@end