如何在iphone中再次显示表格视图时删除单元格选择样式颜色?

时间:2010-05-05 15:46:07

标签: iphone uitableview

我是iphone开发的新手。我创建了一个显示我的内容的表。如果我选​​择一行,它的状态会以蓝色突出显示并导航到另一个视图,如果我单击后退按钮,它会导航回显示的表格点击的蓝色单元格,我想在导航回到它的视图时删除表格上突出显示的颜色。我怎么能这样做。感谢。

5 个答案:

答案 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)
        }
    }