HIghlight UITableViewCell与图像

时间:2014-06-04 13:08:11

标签: ios uitableview

在我的应用中,我使用的是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;
}

它会突出显示单元格,但当我选择另一个单元格时,也会选择前一个单元格,如下所示。我想在选择另一个单元格screen shot

时清除上一个单元格

在屏幕截图中,列表视图和搜索会突出显示。

2 个答案:

答案 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以使其重绘所有内容。