我有一个使用自定义ViewCell和单选按钮的自定义ListView。单击每个单选按钮后,ListView会动态调整其高度以隐藏/显示注释框。
在iOS平台上使用ForceUpdateSize
时,单击单选按钮会使ListView性能迅速降低。该应用程序最终会挂起并停止响应。
是否有替代解决方案可用来代替ForceUpdateSize
在运行时动态扩展ListView行?
最佳答案
在需要更改ViewCell大小的任何地方定义一个ViewCell Size Change事件
public static event Action ViewCellSizeChangedEvent;
就您而言,它应该由您的单选按钮触发。这样称呼它:
ViewCellSizeChangedEvent?.Invoke();
然后,它将使用ListView渲染器更新iOS TableView。
public class CustomListViewRenderer : ListViewRenderer
{
public CustomListViewRenderer()
{
WhatEverContentView.ViewCellSizeChangedEvent += UpdateTableView;
}
private void UpdateTableView()
{
var tv = Control as UITableView;
if (tv == null) return;
tv.BeginUpdates();
tv.EndUpdates();
}
}
它可以解决您的性能问题,同时继续使用Xaml,而不是创建不需要的自定义ViewCell。