在我的应用中,我使用的是UITableView。我想用图像突出显示单元格。 我的代码是:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [slideMenuTableView cellForRowAtIndexPath:indexPath];
UIImageView *image = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"selected_tab_bg.png"]];
cell.selectedBackgroundView = image;
}
它会突出显示单元格,但当我选择另一个单元格时,也会选择前一个单元格,如下所示。我想在选择另一个单元格
时清除上一个单元格在屏幕截图中,列表视图和搜索会突出显示。
答案 0 :(得分:1)
与didSelectRowAtIndexPath委托方法类似:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [slideMenuTableView cellForRowAtIndexPath:indexPath];
UIImageView *image = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"selected_tab_bg.png"]];
cell.selectedBackgroundView = image;
}
还有另一个名为didDeselectRowAtIndexPath
在那边写下这段代码:
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
cell.selectedBackgroundView = nil; // or set anything else like normal cell
}
希望这就是你要找的东西。
答案 1 :(得分:0)
cellForRowAtImagePath可能会向您发送一个可回收的单元格,该单元格可能是您之前突出显示的单元格,也可能不是。如果您已将单元格设置为突出显示,则需要记住该单元格并取消设置。或者,您可以在cellForRowAtImagePath中使用if条件,并确保它取消设置先前突出显示的并根据当前indexPath设置当前突出显示,然后在tableview上调用reloadData以使其重绘所有内容。