如果 UITableViewControllers 的clearsSelectionOnViewWillAppear
属性设置为 YES,将取消选择 viewWillAppear 上的选定行。如果您没有使用具有该设置的表视图控制器(我认为默认为 YES),请自己做:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}
实现 did (或 will) 取消选择委托方法并修复您的颜色:
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
// do what you want to the cell
}
顺便说一句,SO 上的其他人建议在单元格的内容视图上设置颜色(不是cell.backgroundColor
,而是cell.contentView.backgroundColor
),并在willDisplayCell:forRowAtIndexPath:
.