处置UITableView或UICollectionView单元格

本文关键字:单元格 UICollectionView UITableView 处置 | 更新日期: 2023-09-27 18:17:04

我有一个使用自定义TableViewCell的UITableView。这个TableViewCell包含一个可观察订阅(也可以是手势识别器),它需要在单元格被处置时被处置。

我不清楚什么时候应该显式地调用表视图单元格上的Dispose。CellDisplayEnded只在cell因为滚动而不可见时被调用而不是在TableView被重新加载或者TableView在弹窗上弹窗被解散时被调用。在这些情况下,dispose只会在TableView本身被处置时从终结器调用。但是我犹豫是否添加清理代码,因为单元格已经在最终队列中,并且它的状态是不确定的。我没有从Xamarin那里找到如何处理这种情况的指导。

我想知道如果我应该处置所有可见的单元格时,TableViewSource处置。任何想法吗?

处置UITableView或UICollectionView单元格

初始化自定义单元格时,将标签设置为-1 &在GetCell方法中使用下面的代码进行检查,以便我们处理不可见的单元格&

if (cell == null)
            {
                cell = new UITableViewCell(UITableViewCellStyle.Default, "identifier");
            }
            else
            {
                if(cell.ContentView!=null)
                {
                foreach (UIView subview in cell.ContentView)
                    {
                        if (subview.Tag == -1)
                        {
                            subview.RemoveFromSuperview();
                        }
                    }
                }
            }

在https://stackoverflow.com/a/24121686/420175中,Xamarin开发人员Rolf Bjarne Kvinge建议在列表中跟踪单元格,然后手动调用Dispose()。