我是iphone开发的新手。我创建了一个显示我的内容的表。如果我选择一行,它的状态会以蓝色突出显示并导航到另一个视图,如果我单击后退按钮,它会导航回显示的表格点击的蓝色单元格,我想在导航回到它的视图时删除表格上突出显示的颜色。我怎么能这样做。感谢。
答案 0 :(得分:48)
我认为通常接受的方法是在导航到新视图时取消选择单元格。而不是viewWillAppear,使用tableview委托方法didSelectRowAtIndexPath和您正在使用的相同的deselectRowAtIndexPath。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath{
[tableView deselectRowAtIndexPath:newIndexPath animated:YES];
}
(通过普遍接受,我的意思是“我经常在示例代码中看到的东西”。这取决于你最终想要的样子)
答案 1 :(得分:14)
我终于通过在我的表视图类中实现它来实现它。
- (void)viewWillAppear:(BOOL)animated
{
NSIndexPath *tableSelection = [self.tableView indexPathForSelectedRow];
[self.tableView deselectRowAtIndexPath:tableSelection animated:NO];
}
答案 2 :(得分:14)
你在cellForRowAtIndexPath方法上做错了。使用这个
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
在您的UITableViewCells
上如果您希望单元格不会突出显示,也不会在选择触摸时返回查看,这将是正确的方法。如果您只想在返回时取消选择单元格,则其他解决方案更合适。
答案 3 :(得分:0)
viewDidAppear:
的默认实现应该为您处理。如果您在表视图控制器中覆盖了该方法,请不要忘记在覆盖方法中调用[super viewDidAppear:animated]
。
答案 4 :(得分:0)
对于Swift 3:
override func viewWillDisappear(_ animated: Bool) {
if let indexPath = self.tableview.indexPathForSelectedRow {
tableview.deselectRow(at: indexPath, animated: true)
}
}