如果我不调用-beginUpdates,为什么行计数等属性可能无效?

时间:2010-04-14 14:17:08

标签: iphone uitableview

Apple谈到了UITableView -beginUpdates -endUpdates块:

  

如果未在此块内进行插入,删除和选择调用,则行计数等表属性可能会变为无效。

我想知道-beginUpdates究竟是做什么的。当我没有将插入/删除代码放在此块中时,为什么行计数等表属性可能会变得无效?

1 个答案:

答案 0 :(得分:4)

表中的行以两种方式更改:(1)基础数据发生更改,表必须重新加载才能显示新数据。 (2)用户通过插入,删除或拖动直接编辑表。块句柄(2)。

beginUpdatesendUpdates块告诉表它正在被直接编辑,并且它不应该依赖于其数据源返回的值。如果没有该块,表将正常调用numberOfRowsInSection以查明它应该具有多少行。如果用户刚刚插入或删除了一行,则会收到错误的值,因为数据模型可能尚未更新。在表显示更改并且委托写入数据之前,数据源将不会返回正确的值。

您可以将块视为表与数据源的临时解耦。