OGeek|极客世界-中国程序员成长平台

标题: iphone - 在 UITableView 上使用 reloadData 作为保险单 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 12:39
标题: iphone - 在 UITableView 上使用 reloadData 作为保险单

我的 UITableView 有一个相当复杂的数据源。我非常小心地将它与 tableview 本身保持同步,每当某些数据发生变化时手动插入和删除行/部分(带有动画),反之亦然。

我很难 100% 有信心保持这些匹配。 View 和数据之间不匹配的影响可能很严重 - 例如,选择一行并尝试对关联的对象执行某些操作,当该对象不存在时,将导致崩溃。许多其他错误会导致不太明显的错误(例如,对错误的对象进行操作)。

我在想如果我在每次数据更改后调用 reloadData 而不是手动修改 View ,所有这些都会消失。但是那样我会失去动画。

所以也许我可以在动画结束后以某种方式调用 reloadData ,作为安全措施。

对你的想法感兴趣!



Best Answer-推荐答案


我感觉到你的痛苦。不幸的是,我认为重新加载的想法没有多大帮助。如果模型和表格 View 之间存在差异,根据我的经验,该问题表现为更新动画之前或期间的异常。如果有问题,我发现您无法重新加载,而且我认为您不想这样做。

根据我的经验,这些是导致模型容易与表格 View 不同步的一些风险因素:

这有点超出了表格 View 的范围,而且,我并不声称自己是这里所有讲道的完美实践者,但我认为让您的应用充满信心的方法包括以下几点:

  1. 在没有美术和应用逻辑的情况下构建 UI;只是一个 模型的模拟版本 - 在可能的范围内 - 等于 复杂性,但不是数量,真实的东西。

  2. 在一定程度上构建模型和应用逻辑,以及测试 可能 - 独立于 UI 进行操作。

  3. 在您进行测试时,将异常视为您的 friend ,告诉您您需要修复。 尽可能长时间地插入尽可能少的防御性代码

我的 0.02 美元。祝你好运。

关于iphone - 在 UITableView 上使用 reloadData 作为保险单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9961736/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4