Iphone UITableView:切换回视图后高亮显示的单元格

Iphone UITableView:切换回视图后高亮显示的单元格,iphone,objective-c,uitableview,Iphone,Objective C,Uitableview,我正在使用UINavController和一些uitableView来显示一些数据的向下搜索(例如,像Contact应用程序)。效果很好。我唯一的问题是,当我在第一个表视图中选择一个单元格时,它会高亮显示,然后视图会切换到下一个级别,如果我返回到第一个级别,该单元格仍会高亮显示。那么,如何在切换回时重置突出显示?在表视图的控制器中执行以下操作: -(void) viewWillAppear:(BOOL)inAnimated { NSIndexPath *selected = [self.

我正在使用UINavController和一些uitableView来显示一些数据的向下搜索(例如,像Contact应用程序)。效果很好。我唯一的问题是,当我在第一个表视图中选择一个单元格时,它会高亮显示,然后视图会切换到下一个级别,如果我返回到第一个级别,该单元格仍会高亮显示。那么,如何在切换回时重置突出显示?

在表视图的控制器中执行以下操作:

-(void) viewWillAppear:(BOOL)inAnimated {
    NSIndexPath *selected = [self.table indexPathForSelectedRow];
    if ( selected ) [self.table deselectRowAtIndexPath:selected animated:NO];
}

或者您可以在
tableView:didSelectRowAtIndexPath:
中取消选中选中的行,您可以在该行中处理下一个控制器的推送。

另一种方法是在选择单元格时取消选中该单元格

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

为什么不使用UITableViewController?+1。这是大多数表视图应用程序的行为方式,也是用户可能经常期望的行为方式。推荐的方法是在视图中执行此操作:如您所建议。这会给用户一个可视的提示,提醒他们来自哪个单元格。请注意,如果从UITableViewController继承,则可以免费获得此行为。UITableViewController所做的另一件事,您也应该做的是在ViewDidDisplay中调用[tableView flashScrollIndicators]:因此,如果表格视图中的项目多于屏幕上显示的项目,用户也会得到一个可视提示。请注意,要显示用户上次选择的单元格,请使用动画取消选择。