我有一个标准的 UITableView。我想将shadowColor
单元格的设置textLabel
为[UIColor whiteColor]
,但仅在触摸单元格时。为此,我使用以下代码。它是一个自定义 UITableViewCell 子类,它覆盖了 setSelected/setHighlighted:
@implementation ExampleTableViewCell
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
[self setShadowColorSelected:selected];
}
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {
[super setHighlighted:highlighted animated:animated];
[self setShadowColorSelected:highlighted];
}
- (void)setShadowColorSelected:(BOOL)selected {
if (selected) {
self.textLabel.shadowColor = [UIColor blackColor];
}else {
self.textLabel.shadowColor = [UIColor whiteColor];
}
}
@end
我对这种方法的问题是,在取消选择时,单元格的时间很短,标签的文本和阴影都是白色的。请参阅此屏幕截图,该屏幕截图是在取消选择的确切时刻拍摄的:
这与这两个帖子中的方法基本相同:
我在后一个问题中使用了公认答案的方法。
我创建了一个非常非常简单的代码项目并将其上传到 github。它显示了我的问题。它只是一个显示单个单元格的 UITableViewController。
除此之外,没有什么花哨的。UITableView 委托方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
cell = [[ExampleTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text = @"test";
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.tableView deselectRowAtIndexPath:indexPath animated:YES]; //setting this to NO doesn't work either!
}
有任何想法吗?