编辑控件在重新加载时消失

时间:2012-01-09 01:54:30

标签: iphone objective-c uitableview

有点麻烦。

我在分组模式下有一个UITableView。该表设置为始终处于编辑模式 - 这工作正常。我的所有行都是可删除的。行是缩进的,我的所有UITableViewCellEditControl都显示出来。

问题是当一行实际被删除时我更新了我的数据源,然后调用:

deleteRowsAtIndexPaths:
reloadRowsAtIndexPaths: //needs to get called because of table aesthetics

重新加载后(我也试过了一个简单的reloadData)我所有的UITableViewCellEditControls(带有减号等的红色圆圈)都消失了!行仍然是缩进的,但它们已经消失了。

我在这篇文章中尝试了这个建议:

UITableViewController canceling Edit mode animation when calling [table reloadData] inside (void)setEditing

但没有运气。

任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:0)

不看任何代码,我有一些建议。

根据Apple的UITableView Class Reference:在ReloadData下,它说:

  

调用此方法重新加载用于构造表的所有数据,包括单元格,节页眉和页脚,索引数组等。为了提高效率,表视图仅重新显示可见的行。如果表因重新加载而缩小,它会调整偏移量。表视图的委托或数据源在希望表视图完全重新加载其数据时调用此方法。不应在插入或删除行的方法中调用它,尤其是在通过调用beginUpdates和endUpdates实现的动画块中   块引用

插入和删除行时不应调用它。

从它看起来,你允许他们删除单个单元格,因此,我假设已经实现了以下方法:tableView:editingStyleForRowAtIndexPath:tableView:commitEditingStyle:forRowAtIndexPath:在你的commitEditingStyle中,你应该只是调用删除方法有这样的:

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

这应该不需要任何重载数据。如果你不想显示任何动画,你可以使用noanimation枚举器而不是我在示例中显示的淡入淡出。

但是,如果您仍然认为在删除每个单元格后仍需要重新加载数据,可以尝试使用performSelector:afterDelay:

希望这个tid-bit有帮助!