重新加载表视图数据并取消选择单元格

Jam*_*mes 4 iphone cocoa-touch uitableview ios

我有一个表视图,我想在从详细视图返回时,或者在用户创建项目时从新添加的单元格中取消选择先前选择的单元格.

然而,由于添加有时新项目,该表通过调用刷新reloadDataviewWillAppear:.这意味着即使我有视图,也不会选择任何单元格self.clearsSelectionOnViewWillAppear = NO.

通过在表视图出现(in )之后选择和取消选择单元格viewDidAppear:,取消选择动画的时间明显不同于用户(尝试自己,它更慢,并且感觉不太光滑).

即使在刷新表格视图后,我该如何保留选择?(请记住,根据具体情况,我希望取消选择之前选择的单元格或新创建的单元格.)或者我应该以某种方式重新加载表格中的数据?

Iñi*_*tia 7

你可以保存NSIndexPath- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath方法和视图时重新加载取消选择该行.

另一种方法是NSIndexPath将当前的和当前传递UITableViewControllerUIViewController你正在创建的,当UIViewController弹出它时,你取消选择特定的行.

创建新项目时,将一个项目添加到indexPath的行元素以取消选择右侧行.

您还可以仅重新加载已更改的行:

[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                      withRowAnimation:UITableViewRowAnimationNone];

[self.tableView selectRowAtIndexPath:indexPath 
                            animated:NO
                      scrollPosition:UITableViewScrollPositionNone];

[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
Run Code Online (Sandbox Code Playgroud)