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