取消选择UITableView中的行,这是一个子视图

时间:2011-03-20 17:07:20

标签: iphone uitableview sdk row cell

我有一个UITableView,它作为子视图添加到视图中。选择行时,pushViewController:将显示一个新视图,用户可以选择按后退按钮返回UITableView,但仍然选中该单元格。

在视图出现时有没有办法取消选择?

我已经读过我应该使用以下代码,但我无法使其正常工作。没有错误,没有警告,没有任何错误。

[tableProgram deselectRowAtIndexPath:[tableProgram indexPathForSelectedRow] animated:NO];

3 个答案:

答案 0 :(得分:9)

您应该取消选择UITableView委托的 didSelectRowAtIndextPath 方法中的行。看起来应该是这样的。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    /* initialize your view controller here v and then push it */
    SomeViewController *v = [[[SomeViewController alloc] init] autorelease];
    [self.navigationController pushViewController:v animated:YES];
}

Dot将它与 didDeselectRowAtIndextPath 方法混淆 - 当人们在从智能感知中选择方法时不太注意时,就会发生这种情况。

答案 1 :(得分:2)

您可以使用的另一个地方是viewDidAppear

- (void)viewDidAppear:(BOOL)animated

并插入以下内容

NSIndexPath *indexPath = [tableView indexPathForSelectedRow];

[tableView deselectRowAtIndexPath:indexPath animated:YES];

单击后单元格保持选中状态并推送到不同的视图控制器,但是当它弹回原始视图控制器时取消选择,因此它为用户提供了最后一个选定行的视觉提示。

答案 2 :(得分:0)

引用 SimonBS

  

试过了,并希望它会起作用(对   得到动画)但似乎   viewDidAppear:(BOOL)动画和   viewWillAppear :( BOOL)动画不是   在子视图中调用。

honcheng的代码工作

-(void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    NSIndexPath *indexPath = [self.tableViewOutlet indexPathForSelectedRow];

    [self.tableViewOutlet deselectRowAtIndexPath:indexPath animated:YES];

}

你只需要在TableView的superview上使用它。 (例如:如果你在视图中有一个带有TableView子视图的xib文件,你只需要转到相应的视图控制器代码并覆盖viewWillAppear,我就这样做了,它就可以了!你好视觉提示!)