UITableView 删除行而不滚动

Posted

技术标签:

【中文标题】UITableView 删除行而不滚动【英文标题】:UITableView delete rows without scrolling 【发布时间】:2013-04-13 00:15:34 【问题描述】:

我正在建立一个看不见的图像提要image.seen = 0

我有一个 NSFetchedResultsController 与一个 UITableViewController 捆绑在一起。

我在tableView:didEndDisplayingCell:forRowAtIndexPath 标记image.seen = 1

当我的用户滚动到包含 image2 的 row2 时,image1 将被更新,而 row1 将被删除。

case NSFetchedResultsChangeDelete:

    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                         withRowAnimation:UITableViewRowAnimationFade];

    break;

但是,当您删除第 1 行时,UITableView 会记住您当前位于顶部的滚动位置 1,并在删除发生时为您保持该滚动位置。

因此,您将滚动到第 3 行。 row2 现在消失并被删除。删除完成后,表格会将您滚动到第 4 行....

我该如何解决这个问题?

【问题讨论】:

当您删除一行时,UITableView 实际上并没有滚动。 @troop231 是的。检查我构建的这个示例项目。 bit.ly/10TMBba 我的错,我真的不认为这被认为是滚动。 【参考方案1】:

如果我们想从外部删除行,我们可以删除canEditRowAtIndexPath tableview委托中的行,如果我们从数组中加载,则根据tableView的行号从数组中的特定索引中删除记录并重新加载数据。

【讨论】:

以上是关于UITableView 删除行而不滚动的主要内容,如果未能解决你的问题,请参考以下文章

删除重复行而不排序[重复]

从页面中删除行而不刷新页面

在 vim 中查找第一个未注释的行而不删除搜索

如何使用 jquery 从 asp.net 视图模型中动态删除行而不删除集合中的其余下一个对象

如何使用 vue.js 中的单击事件从数据表中删除行而不干扰计算函数

使用 NSFetchedRequestController 更新 UITableView 行和部分,而不使用 reloadData