2010-10-14 50 views
0

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

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

这似乎是更多的工作比它应该是....我错过了什么吗?我注意到其他人有非常相似的问题,从来没有看到解决它的权威方法。

回答

0

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

控制器拥有的字​​典如何记录每个视图的每个部分编号。由于您的录制部分编号取决于桌面视图,所以您必须等待刷新(您不必经常自己拨打电话)。

您只需找到/设法为每个查看,让你知道哪一个是哪个,而不管顺序。

设置一个计时器的时间“短”期后致电reloadData如果用户结束了(我想我可以添加定时器触发之前出不同步的头相互作用似乎哈克和有点冒险一个状态变量来防止这种情况,呃)。

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

+0

正如我在问题中提到的那样,我可以跟踪标题视图,但我问:我怎样才能避免泄漏它们?何时使用自定义页眉/页脚视图“完成”表格视图?如果我保留对标题视图的引用(例如,在字典中),以便我可以更新它们的标签,我怎么知道何时可以发布它们?附:使用带状态变量的延迟重新加载来防止视图的不同步使用非常简单,并且可以保留段删除动画。但我仍然想知道如何做到这一点“正确”,并知道我何时可以从我的字典中发布意见。 – Bogatyr 2010-10-16 11:45:37

+0

当部分中的所有行都消失后,页眉和页脚也应该消失。问题是你必须对多个部分进行明智的选择,哪些部分是谨慎的,并且使用某种检查方式,以便在正确的索引中删除正确的视图。 – JoePasq 2010-10-16 15:48:07

+0

在某个部分滚动屏幕时,UITableView将释放该部分的自定义视图。我想知道这是什么时候发生的。那可能吗?否则,我必须永远坚持所有的自定义标题视图,直到表被销毁。这正是我想要避免的。 – Bogatyr 2010-10-27 10:39:49

0

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

+0

我知道我可以跟踪标题视图(正如我在我的问题中指出的那样),但是如何避免泄漏它们? – Bogatyr 2010-10-16 11:46:00

相关问题