【发布时间】:2017-11-25 17:24:24
【问题描述】:
-
说明:
应用启动时会创建一个包含 3 行的表格视图。如果点击导航栏中的添加按钮,则会在表格视图中添加一个新行。添加行动作背后的核心过程是方法
func insertRows(at:, with:)。Apple documents 和许多堆栈溢出答案(例如,this one)建议将插入、删除或选择表视图的行和部分的任何方法调用放在函数
beginUpdates()和endUpates()之间。我删除了
beginUpdates()和endUpdates();事实证明,没有它们,应用程序也能正常工作。 -
问题:
添加
beginUpdates()&endUpdates()有什么好处? -
我为什么要问这个问题:
函数
func insertRows(at:, with:)正在调用委托函数tableView(_:, cellForRowAt:) -> UITableViewCell通过dequeueReusableCell(withIdentifier:, for:) -> UITableViewCell创建一个新单元格,这与tableView在应用程序启动时创建3 个默认行的过程相同,但是没有这样的beginUpdates/endUpdates那里。那么为什么我需要在稍后添加新行时添加此过程,而没有它们,应用程序似乎仍然可以工作?
【问题讨论】:
-
我删除了 beginUpdates() 和 endUpdates() 事实证明,没有它们,应用程序工作得很好。 --> 如果没有重新加载数据,它怎么能正常工作,你使用 beginUpdates() 和 endUpdates 或重新加载数据以更新/动画您的 tableview
-
@AmritTiwari 你能否停止复制和粘贴其他人的答案,例如这个:stackoverflow.com/a/23260386/3004698
-
Option-单击
beginUpdates并阅读弹出窗口。它用于对您想要一次全部设置动画的多个插入或删除进行分组。单个插入或删除不需要begin/endUpdates。
标签: ios swift xcode tableview tableviewcell