处置UITableView或UICollectionView单元格
本文关键字:单元格 UICollectionView UITableView 处置 | 更新日期: 2023-09-27 18:17:04
我有一个使用自定义TableViewCell的UITableView。这个TableViewCell包含一个可观察订阅(也可以是手势识别器),它需要在单元格被处置时被处置。
我不清楚什么时候应该显式地调用表视图单元格上的Dispose。CellDisplayEnded只在cell因为滚动而不可见时被调用而不是在TableView被重新加载或者TableView在弹窗上弹窗被解散时被调用。在这些情况下,dispose只会在TableView本身被处置时从终结器调用。但是我犹豫是否添加清理代码,因为单元格已经在最终队列中,并且它的状态是不确定的。我没有从Xamarin那里找到如何处理这种情况的指导。
我想知道如果我应该处置所有可见的单元格时,TableViewSource处置。任何想法吗?
初始化自定义单元格时,将标签设置为-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()。