Apple谈到了UITableView -beginUpdates -endUpdates块:
如果未在此块内进行插入,删除和选择调用,则行计数等表属性可能会变为无效。
我想知道-beginUpdates究竟是做什么的。当我没有将插入/删除代码放在此块中时,为什么行计数等表属性可能会变得无效?
答案 0 :(得分:4)
表中的行以两种方式更改:(1)基础数据发生更改,表必须重新加载才能显示新数据。 (2)用户通过插入,删除或拖动直接编辑表。块句柄(2)。
beginUpdates
到endUpdates
块告诉表它正在被直接编辑,并且它不应该依赖于其数据源返回的值。如果没有该块,表将正常调用numberOfRowsInSection
以查明它应该具有多少行。如果用户刚刚插入或删除了一行,则会收到错误的值,因为数据模型可能尚未更新。在表显示更改并且委托写入数据之前,数据源将不会返回正确的值。
您可以将块视为表与数据源的临时解耦。