内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
为什么uitableview单元格保持突出显示?我点击单元格,并可以看到它在突出显示细节视图时保持突出显示。细节视图弹出后,单元格仍然突出显示。
在你的didSelectRowAtIndexPath中,需要调用deselectRowAtIndexPath来取消选择该单元格
因此,无论你在didSelectRowAtIndexPath中做什么,都只需要调用deselectRowAtIndexPath。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Do some stuff when the row is selected
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
最好的是viewWillAppear:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// Unselect the selected row if any
NSIndexPath* selection = [self.tableView indexPathForSelectedRow];
if (selection) {
[self.tableView deselectRowAtIndexPath:selection animated:YES];
}
}
这样,当你返回到控制器时,你可以看到淡出所选内容的动画。
Swift版本
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// deselect the selected row if any
let selectedRow: IndexPath? = tableView.indexPathForSelectedRow
if let selectedRowNotNill = selectedRow {
tableView.deselectRow(at: selectedRowNotNill, animated: true)
}
}