我有一个自定义单元格布局,继承自MvxTableViewCell。单元格包含的视图之一是支持文本换行的UILabel。包装意味着单元格可以具有不同的高度,因为每个数据项中的文本数量是多少。定义的自定义表格单元格没有任何Storyboard或NIB。它在代码中布局并使用AutoLayout。
我发现细胞正在被重复使用,并且高度保持与以前使用时相同。
当更新数据源并且表中包含新项目时,先前较高的单元格将重新用于不需要额外高度的单元格。我是否需要创建具有特定重用逻辑的自定义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();
表单元格在第一次使用View时正确显示,但后续使用会导致问题,就像滚动一样。
例如,这里是一个混合高度工作的屏幕截图,然后是较高的行从屏幕上滚动然后重新打开后的相同列表。红色框显示单元格应该如何框(FWIW这是测试数据而不是真实人的数据)
另一个例子,此处表格再次正确显示,然后再次使用相同的数据加载,但第二次加载的单元格高度不正确
答案 0 :(得分:0)
我将我的两个问题分成了两个问题,但是这个问题的解决方案对于这一问题和另一个问题都有解决方案UILabel not wrapping in UITableView until device rotate (iOS8)