在首次出现在屏幕

时间:2018-01-20 21:06:51

标签: ios uitableview cocoa-touch

在启动视图控制器期间,我使用insertSectionsinsertRowsdeleteRows等执行一系列行/部分插入和删除操作。操作由后台进程的事件触发(当然,对表视图的实际调用是在主线程上执行的;它们也包含在beginUpdatesendUpdates中)。

  • 当我在viewWillAppear中开始这些行操作时,由于行数据不一致,我最终会崩溃:attempt to delete row 1 from section 0 which only contains 1 rows before the update。发生这种情况时,更新前的部分实际上有2行,但表视图显然无法正确识别。
  • 但是,当我在viewDidAppear中启动完全相同的操作序列时,没有崩溃,行按预期进行动画制作。

这看起来像表视图在出现之前快速运行的插入和删除序列存在问题。这是一个已知的限制,还是您对此问题有另一种解释?

1 个答案:

答案 0 :(得分:1)

看起来你不需要操作实际的UITableViewCells,你可能只是操作某种视图模型(普通对象),准备它们,然后在viewWillAppear上用它们重新加载UITableView