我在TableView中使用了一些自定义单元格和一些UILabel。我需要在选择/突出显示时更改颜色。
1)我应该使用tableviewWillDisplayCell :? 2)如何区分其中选定/突出显示的单元格?
答案 0 :(得分:1)
您无需执行任何有关发现突出显示/选择的操作。当UITableViewCell被选中时,它会自动突出显示所有子视图(可以突出显示的子视图)。 UILabel 是可以突出显示的视图;也就是说,它具有highlighted
属性,它会自动响应突出显示。
所以你没有工作要做;你过分思考这个问题。只需设置每个标签的highlightedTextColor
属性,一切都会自动发生。另一个答案指出,您可以在笔尖中执行此操作,也可以在代码中执行此操作。
如果在选择单元格时确实需要做一些特殊操作,最简单的方法是使用UITableViewCell子类并覆盖setSelected:animated:
。但在你的情况下似乎没有任何需要。
答案 1 :(得分:0)
您可以在笔尖上设置UILabel的高亮颜色。在界面编辑器和右侧面板上选择标签,您应该找到一个更改突出显示颜色的选项(我不在Mac上,因此无法提供更精确的说明)。
如果找不到,只需更改代码的颜色即可。我假设您使用以下内容更改该标签的文本:
myLabel.text = @"something";
只需设置highlightTextColor:
即可myLabel.highlightedTextColor = [UIColor redColor];
答案 2 :(得分:-1)
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"MyCustomCell";
MyCustomCell *cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyCustomCell"
owner:self options:nil];
for (id oneObject in nib) if ([oneObject isKindOfClass:[MyCustomCell class]])
cell = (MyCustomCell *)oneObject;
}
// Set up the cell
//...
return cell;
}
现在关于你的问题,
1-)当我必须处理uitableviewcell的背景时,使用方法 tableviewWillDisplayCell ,这可能不是你想要的
2-)如果选择一个特定的tableViewCell,它将被选中(默认情况下会将其保留为蓝色),所以如果你只想选择最后一个选中的单元格,你只需要使用它:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//...
// do your stuff
}
如果您想使用突出显示方法进行自定义外观,则必须添加 [tableView deselectRowAtIndexPath:indexPath animated:YES]; 到 didSelectRowAtIndexPath ,然后更改tableViewCell的UI。此外,如果您想保存已选择单元格,可以将indexPath.row保存在数据结构(如NSMutableArray)中,您必须在 didSelectRowAtIndexPath 方法中执行该操作
希望这有帮助,如果您需要任何进一步的帮助,请告诉我!
豪尔赫