Я пытаюсь использовать метод UICollectionView
performBatchUpdates
для выполнения операции фильтрации (вроде), и внутри блока я вставляю ячейки, перемещаю ячейки и удаляю ячейки. Я получаю некоторые странные результаты, поэтому мне интересно, действительно ли такое поведение поддерживается (я полагаю, что все индикаторы перепутались). Нужно ли мне просто разбивать каждый «тип» действия (вставка, перемещение и удаление) на отдельные отдельные блоки?
UICollectionView PerformBatchUpdates одновременно вставляет, удаляет и перемещает
Ответы (2)
Все операции внутри performBatchUpdates
выполняются с текущими индексами. Так что нет, вам не нужно разбивать вставки/удаления/перемещения на разные блоки, именно для этого и предназначен performBatchUpdates
. Без какого-либо кода или описания странностей, которые вы видите, трудно помочь...
performBatchUpdates
я удаляю по индексу 0, а затем вставляю по индексу 0 и т. д. Кажется, теперь это работает правильно. Спасибо, просто хотел подтвердить, что могу выполнять пакетные операции разных типов.
- person chinabuffet; 07.12.2012
Только что нашел этот ответ в поисках порядка различных операций и подумал, что поделюсь тем, что я обнаружил в отношении вставки/удаления раздела в сочетании с удалением вставки элемента (без перемещения). Я работал над фильтрацией UICollectionView
и удалением ячеек/разделов, когда они становились пустыми, и их повторным заполнением при очистке поиска. Я поддерживал его, по сути, массивом массивов.
Я обнаружил, что мне нужно вычислить удаленные элементы с индексами строк и разделов, прежде чем удалять разделы, которые я хотел удалить из источника данных. (перед разделом удалить)
Затем удалите разделы из источника данных и сохраните эти индексы для удаления.
Затем вставьте любые новые разделы/при необходимости отсортируйте/и отслеживайте все эти вставленные разделы.
Наконец, вычислите вставленные строки на основе индексов нового раздела.
Deleted Sections: (pre deleted index)
Inserted Sections: (indexes after deleting the deleted sections and adding these back in)
Deleted Rows: (row, pre-deleted section)
Inserted rows: (row, section based on index after inserting new sections)
это было с iOS 9.