Cocoa touch 突出显示和取消选择UINavigationController

Cocoa touch 突出显示和取消选择UINavigationController,cocoa-touch,uinavigationcontroller,uitableview,Cocoa Touch,Uinavigationcontroller,Uitableview,我使用的大多数iPhone应用程序在使用导航流时都有非常微妙但巧妙的行为。返回到上一个视图时,所选项目将立即取消选择,以便获得一个简短的取消高亮显示。这会告诉用户他们刚刚编辑/查看了哪个项目 我的问题是我自己的应用程序没有表现出这种行为。我在Xcode4.2中设置了它,主要使用segues,但有一些代码落后 我已经把范围缩小到我在ViewWillDisplay中使用重载数据这一事实。但是我需要在从一个模式返回时重新加载它,我使用该模式将项目添加到列表中 如何/在何处重新加载列表,使其包含新项目,

我使用的大多数iPhone应用程序在使用导航流时都有非常微妙但巧妙的行为。返回到上一个视图时,所选项目将立即取消选择,以便获得一个简短的取消高亮显示。这会告诉用户他们刚刚编辑/查看了哪个项目

我的问题是我自己的应用程序没有表现出这种行为。我在Xcode4.2中设置了它,主要使用segues,但有一些代码落后

我已经把范围缩小到我在ViewWillDisplay中使用重载数据这一事实。但是我需要在从一个模式返回时重新加载它,我使用该模式将项目添加到列表中


如何/在何处重新加载列表,使其包含新项目,但不会停止取消选择/突出显示模式的工作?

我猜取消选择使用默认动画持续时间
0.25f
,因此为什么不在
视图中显示:
使用:

[self.tableView performSelector:@(reloadData) withObject:nil afterDelay:0.25f];
我相信会有更好的办法

我需要在从用于将项目添加到列表的模式返回时重新加载此

重新加载整个表在概念上很简单,但更好的解决方案可能是调用
-insertRowsAtIndexPaths:withRowAnimation:
将新行添加到表中。这将允许取消选择动画正常进行,并且当插入新行时,您也可能会得到一个很好的动画。

执行这些步骤

在.h文件中声明一个int值“selectedCell”,并在viewDidLoad:method中赋值-1。 在

方法,做

if (indexPath.row==selectedCell){
cell.selected=YES;
}
而且

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
方法,做

selectedCell=indexPath.row;
它将使选定的行始终高亮显示

selectedCell=indexPath.row;