我在我的 TableView 中使用了一个带有一些 UILabel 的自定义单元格。我需要在选择/突出显示它们时更改它们的颜色。
1)我应该使用 tableviewWillDisplayCell: 吗?2)如何区分其中选定/突出显示的单元格?
我在我的 TableView 中使用了一个带有一些 UILabel 的自定义单元格。我需要在选择/突出显示它们时更改它们的颜色。
1)我应该使用 tableviewWillDisplayCell: 吗?2)如何区分其中选定/突出显示的单元格?
您无需对发现突出显示/选择做任何事情。UITableViewCell 被选中时会自动突出显示其所有子视图(可以突出显示的子视图)。UILabel是一个可以高亮的视图;也就是说,它有一个highlighted
属性,它会自动响应突出显示。
所以你没有工作要做;你想多了这个问题。只需设置每个标签的highlightedTextColor
属性,一切都会自动发生。正如另一个答案指出的那样,您可以在笔尖中直接执行此操作,也可以在代码中执行此操作。
如果在选择单元格时确实需要做一些特殊的事情,最简单的方法是使用 UITableViewCell 子类并覆盖setSelected:animated:
。但在你的情况下似乎不需要这个。
您可以在笔尖上设置 UILabel 的突出显示颜色。选择界面编辑器上的标签,在右侧面板上,您应该找到一个更改突出显示颜色的选项(我不在 Mac 上,因此无法提供更精确的说明)。
如果找不到,只需更改代码上的颜色即可。我假设您使用以下内容更改该标签的文本:
myLabel.text = @"something";
只需设置突出显示的TextColor:
myLabel.highlightedTextColor = [UIColor redColor];
first things first, are you able to see your cell in the right way? if you did create a custom cell i would go with this:
// 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;
}
Now regarding your questions,
1-) I Use the method tableviewWillDisplayCell when i have to work the background of the uitableviewcell so this might not be what you're looking for
2-) If you select a specific tableViewCell it will be selected (by default it will leave it blue), so if you just want to select the last selected cell, you just need to use this:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//...
// do your stuff
}
if you want to use your highlight methods for your custom appearance you'll have to add [tableView deselectRowAtIndexPath:indexPath animated:YES]; to your didSelectRowAtIndexPath and then change the UI of the tableViewCell. Also if you want to save wich cell has been selected you can save the indexPath.row in a data structure such as a NSMutableArray and you would have to do that operation in the didSelectRowAtIndexPath method
hope this helps, if you need any further help, let me know!
Jorge