首页 > 解决方案 > 具有动态高度的 ReactiveTableViewCell 反对单元重用:如何避免陷入无限循环?

问题描述

所以这里是我的应用程序不断落入循环的描述:

有一个包含 ReactiveTableViewCell 的 UITableView(但我认为 RX 部分在这里并不重要,所以让我们假设这些是 UITableViewCell)。每个单元格在可展开/可折叠的 UIView上嵌入一个 UITextField (允许我显示与文本字段相关的任何错误消息) - 当没有显示错误时,此子视图是折叠的。

问题是,当 UITableView 滚动并重“错误”单元格时,该单元格的子视图仍处于展开状态。由于 PrepareForReuse() 方法用于在重用之前重置单元格状态,我认为这将是折叠子视图的正确位置,而且确实如此......直到应用程序陷入循环,调整顶部屏幕和底部的大小-永远屏蔽同一个单元格。

你认为我可以如何解决这个问题?也许有没有办法增加单元格重用容忍度,所以 UITableView 一旦从屏幕上消失就不会重用单元格?也许我应该在滚动列表时尝试调整大小锁定,但它总是会留下一些错误余地,所以这不是我正在寻找的修复。

谢谢你的帮助。

编辑 :

好吧,看起来RX部分并不是那么一无所知。我订阅的 IObservable 旨在显示错误消息,它是一个 ReplaySubject。由于这个小家伙,似乎在那里发生了循环,无休止地刷新 UITableView(通过 TV.BeginUpdates/TV.EndUpdates)。所以到目前为止,我认为 ReplaySubject 和 cell-reuse 不能完全正常工作,因为用 BehaviorSubject 进行简单替换可以解决问题。

标签: iosuitableviewheightreactiveuiprepareforreuse

解决方案


推荐阅读