UINavigationController的突出显示和取消选择

时间:2012-01-08 07:55:30

标签: cocoa-touch uinavigationcontroller uitableview

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

我的问题是我自己的应用程序没有出现这种行为。我在xcode 4.2中使用大多数segues进行设置,但后面有一些代码。

我已将其缩小到我在viewWillAppear中使用reloadData的事实。但是我需要在从用于向列表添加项目的模态返回时重新加载它。

我应该如何/在哪里重新加载我的列表以便它包含新项目但不会停止取消选择/突出显示模式?

3 个答案:

答案 0 :(得分:0)

我猜测取消选择使用0.25f的默认动画持续时间,为什么不在viewDidAppear:使用:

[self.tableView performSelector:@(reloadData) withObject:nil afterDelay:0.25f];

我确信会有更好的方法

答案 1 :(得分:0)

  

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

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

答案 2 :(得分:0)

执行以下步骤。

在.h文件中声明一个int值“selectedCell”并在viewDidLoad:方法中指定-1。 在

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

方法,做

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

并在

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

方法,做

selectedCell=indexPath.row;

它将始终突出显示所选行。