我使用的大多数iPhone应用程序在使用导航流时都具有非常微妙但光滑的行为。当您返回上一个视图时,所选项目会立即取消选择,以便您获得简短的不突出显示。这告诉用户他们刚刚编辑/查看了哪个项目。
我的问题是我自己的应用程序没有出现这种行为。我在xcode 4.2中使用大多数segues进行设置,但后面有一些代码。
我已将其缩小到我在viewWillAppear中使用reloadData的事实。但是我需要在从用于向列表添加项目的模态返回时重新加载它。
我应该如何/在哪里重新加载我的列表以便它包含新项目但不会停止取消选择/突出显示模式?
答案 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;
它将始终突出显示所选行。