iOS上的ForceUpdateSize ListView问题

Apu*_*a19 7 listview custom-renderer ios xamarin xamarin.forms

我有一个自定义ListView使用自定义ViewCells与单选按钮.单击每个单选按钮时,ListView会动态调整其高度以隐藏/显示注释框.

ForceUpdateSize在iOS平台上使用时,单击单选按钮时ListView性能会迅速降低.该应用程序最终挂起并停止响应.

是否有替代解决方案而不是ForceUpdateSize在运行时动态扩展ListView行?

Duk*_*e Y 9

无论何时需要更改ViewCell大小,都可以定义ViewCell Size Change事件

public static event Action ViewCellSizeChangedEvent; 
Run Code Online (Sandbox Code Playgroud)

在您的情况下,它应该由您的单选按钮触发.像这样称呼它:

ViewCellSizeChangedEvent?.Invoke();
Run Code Online (Sandbox Code Playgroud)

然后,它将使用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();
    }
}
Run Code Online (Sandbox Code Playgroud)

它应该在继续使用Xaml的同时解决您的性能问题,而不是创建不需要的自定义ViewCell.