2015-10-09 3 views
0

У меня есть UITableView, который использует собственный TableViewCell. Этот TableViewCell содержит наблюдаемую подписку (или это может быть распознавание жестов), которая должна быть удалена, когда ячейка расположена.Утилизация ячейки UITableView или UICollectionView

Непонятно, когда я должен явным образом вызывать Dispose в ячейке представления таблицы. CellDisplayEnded вызывается только тогда, когда ячейка не видна из-за прокрутки, а не когда TableView перезагружается или TableView находится на popover, и popover получает отклонение. В любом из этих случаев утилита вызывается только из финализатора, когда сам TableView удаляется. Но я не решаюсь добавить очищающий код, поскольку ячейка уже находится в завершенной очереди, а состояние ее индетерминировано. Я не нашел руководства относительно того, как справиться с этой ситуацией у Xamarin.

Мне интересно, должен ли я располагать все видимые ячейки при размещении TableViewSource. Есть предположения?

+0

У вас есть решение для этого? я не могу распоряжаться ячейками таким же образом –

ответ

0

Когда вы инициализируете пользовательскую ячейку, установите тег на -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(); 
         } 
        } 
       } 
      } 
Смежные вопросы