2015-08-12 2 views
0

У меня есть UICollectionView с несколькими ячейками в нем.UICollectionView.reloadData или UICollectionView.deleteItemsAtIndexPaths делает ячейку скрытой, но по-прежнему доступной.

Я удалил первую ячейку, нажав на нее кнопку, она работает хорошо, независимо от того, что я выбираю [UICollectionView reloadData] or [UICollectionView deleteItemsAtIndexPaths:].

Теперь следующие ячейки будут двигаться вперед, поэтому первая ячейка теперь будет второй до удаления, легко понять, правильно?

Теперь приходит странная часть:

  1. я нажимаю на кнопку первой ячейки удаления, это показывает:

    <MyCell: 0x7fc5de566590; baseClass = UICollectionViewCell; frame = (220 20; 80 104); alpha = 0; hidden = YES; layer = <CALayer: 0x7fc5de566740>> 
    
  2. напечатать видимые ячейки:

    < __NSArrayM 0x7fc5de655830>(
    < MyCell: 0x7fc5de55c060; baseClass = UICollectionViewCell; frame = (20 134; 80 104); layer = < CALayer: 0x7fc5de55c210>>, 
    < MyCell: 0x7fc5de635290; baseClass = UICollectionViewCell; frame = (120 134; 80 104); layer = < CALayer: 0x7fc5de635440>> 
    ) 
    

смотрите? ячейка, на которую я нажал, на самом деле тот, который был удален, если это НЕ! он имеет flag hidden = YES, и он также имеет фрейм и супервизор (да, просмотр - это представление коллекции).

Теперь это приносит мне проблему, потому что я хотел удалить этого парня MyCell: 0x7fc5de55c060.

Значит, какой-нибудь ключ к этому? Спасибо!

+0

Вы повторно используете ячейки? – Templar

+0

Эти ячейки предназначались для повторного использования, верно? – george

+0

Их следует использовать повторно, это намного быстрее, а память эффективна. Хотя я точно не понимаю вашу проблему. Вы удаляете ячейку, а следующее удаление не работает? Как добавить кнопку удаления? – Templar

ответ

0

Проблема решена. Это потому, что я переопределяю hittest в MyCell. Я не ожидал, что удаленные ячейки все равно будут отображаться в представлении коллекции.

Смежные вопросы