为 UITableView 中不同高度的单元格实现单元格重用 (iOS8+)

Implementing cell reuse for varying height cells in UITableView (iOS8+)

我有一个 自定义 单元格布局,继承自 MvxTableViewCell。单元格包含的视图之一是支持文本换行的 UILabel。换行意味着单元格可以具有不同的高度,因为这是由每个数据项中的文本数量决定的。自定义 table 单元格是在没有任何故事板或 NIB 的情况下定义的。它在代码中进行布局并使用 AutoLayout。

我发现单元格正在被重复使用,并且高度与之前使用时的高度保持一致。

更新数据源并且 table 中有新项目时,以前较高的单元格将重新用于不需要额外高度的单元格。我是否需要创建具有特定重用逻辑的自定义 MvxTableViewSource?我什至如何确保不重复使用额外高度的行?

我希望这不是 Monotouch 和 MVVMCross 的特定问题,但为了以防万一,这就是我使用 UITableView

的方式
this.searchResultsTable = new UITableView();
this.searchResultsTable.AccessibilityIdentifier = "SearchView_SearchResultsTable";
this.searchResultsTable.TranslatesAutoresizingMaskIntoConstraints = false;
this.searchResultsTable.RowHeight = UITableView.AutomaticDimension;
this.searchResultsTable.EstimatedRowHeight = 44.0f;
this.searchResultsTable.AllowsMultipleSelectionDuringEditing = true;
this.searchResultsTable.TableFooterView = new UIView();

Table 单元格在第一次使用视图时正确显示,但后续使用会导致问题,滚动也会出现问题。

例如,这里是一个混合高度工作的屏幕截图,在较高的行从屏幕上滚动然后重新打开后,后面是相同的列表。红色方框显示了单元格的大小(FWIW 这是测试数据而不是真实的人的数据)

另一个例子,这里 table 再次正确显示,然后再次加载相同的数据,但第二次加载的单元格高度不正确

我将我的两个问题分成两个问题,但是这个问题和另一个问题都有一个解决方案,这个 SO 答案,