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 删除行而不滚动的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 jquery 从 asp.net 视图模型中动态删除行而不删除集合中的其余下一个对象
如何使用 vue.js 中的单击事件从数据表中删除行而不干扰计算函数
使用 NSFetchedRequestController 更新 UITableView 行和部分,而不使用 reloadData