如何在删除部分时更新UITableView中的自定义标题视图?

时间:2010-10-14 18:47:52

标签: iphone uitableview

我有一个带有自定义标题视图的多节UITableView,需要知道它们的节索引。在viewForHeaderInSection中创建自定义视图时,我当前在UIView的标记字段中记录了节号。但是,删除行时,UITableView不会重新加载屏幕上可见的标题视图的节标题视图,因此它们的标记字段会变得不同步。在表上调用reloadData通过重新创建标头视图来重新同步标记字段,但调用reloadData会干扰行删除动画。如果用户在计时器触发之前最终与不同步的头进行交互,那么设置一个定时器以在“短”时间段之后调用reloadData似乎很麻烦并且有些冒险(我想我可以添加一个状态变量来防止这种情况) ,呃)。

我可以设想跟踪容器中创建的所有标题视图,并在删除行时调整它们的标记(再次)。但是,我如何避免泄漏视图?我怎么知道UITableView什么时候发布了视图,所以我可以删除我对它们的引用,以便它们可以被释放?

这似乎比应该更多的工作....我错过了什么?我注意到其他人有非常相似的问题,从未见过解决问题的明确方法。

2 个答案:

答案 0 :(得分:0)

您不需要重新加载表格;只需更新标签属性。在您删除行的代码中;你有权访问标题视图吗?如果没有,您可以使用观察模式在删除行时提醒标题视图。

答案 1 :(得分:0)

  

我有一个带有自定义标题视图的多节UITableView,需要知道它们的节索引。在viewForHeaderInSection中创建自定义视图时,我当前在UIView的标记字段中记录了节号。

控制器拥有的字​​典如何记录每个视图的每个节号。由于你有记录的部分编号取决于tableview,你必须等待它刷新(你不应该经常自己打电话。)

你只需要找到/设置一个方法来为每个视图设置密钥,这样你就可以知道哪一个与订单无关。

  

如果用户在计时器触发之前最终与不同步的标头进行交互(我想我可以添加一个状态变量),那么设置一个定时器以在“短”时间段之后调用reloadData似乎很麻烦并且有些冒险为了防止这种情况,呃)。

我同意这看起来很黑,本能很好。添加一个状态变量以防止这种情况比每个视图的字典和跟踪系统要少,但我认为它也属于“hacky解决方案”。