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

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

但是,由于有时会添加新项目,因此通过在viewWillAppear:调用reloadData来刷新表格viewWillAppear: 。 这意味着即使我有self.clearsSelectionOnViewWillAppear = NO ,视图出现时也没有选择任何单元格。

通过在表格视图出现后(在viewDidAppear: )选择和取消选择单元格,取消选择动画的时间与用户明显不同(尝试自己,速度慢,感觉不像光滑)。

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


您可以从- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath方法保存NSIndexPath ,并在视图重新加载时取消选择该行。

这样做的另一种方式可能是将NSIndexPath和当前的UITableViewController传递给您创建的UIViewController ,并且在弹出UIViewController时取消选择特定的行。

创建新项目时,向indexPath的行元素添加一个以取消选择正确的行。

您也可以只重新加载已更改的行:

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

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

[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
链接地址: http://www.djcxy.com/p/60013.html

上一篇: Reload Table View Data and Deselect Cell

下一篇: Deselecting the table view row when returning