Выделить невидимую ячейку внутри коллекции
Ну, можно спросить, зачем тебе это делать?
У меня есть представление коллекции внутри некоторого представления, где пользователь может выбрать ячейку. Затем этот выбор сохраняется, и позже, когда пользователь хочет снова войти в это представление, он должен иметь возможность увидеть свой предыдущий сохраненный выбор.
Если его выбор был в конце представления коллекции, я не смогу загрузить представление коллекции с его предыдущим выбором, потому что:
for cell in collectionView.visibleCells()
// find and select previous cell
Не будет проходить через все ячейки, в частности ту, которую выбрал пользователь (которая еще не существует).
Есть ли решение этой проблемы?
2 ответа
Что ж, после долгих поисков мне нужно установить локальную переменную: selectedCell
Затем, когда я хочу показать ячейку, выбранную предыдущим пользователем, я просто установлю переменную и включу:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
{
if(indexPath.row==selectedCell)
}
Я проверяю, выбрано ли оно уже, и отмечаю его Я не мог найти какой-либо другой умный способ сделать это автоматически.
Вы можете запомнить точные пути индекса выбранных строк (используя indexPathsForSelectedRows
), но это все еще не безопасно, если ваш dataSource
установите изменения / обновления, и запомненные индексы могут стать недействительными с новым / другим набором данных. Таким образом, вы должны помнить выбор объектов "реального мира" (где вы заполняете конкретные данные ячейки, например, заголовок и т. Д.), Например, запоминая идентификаторы объектов по вашему выбору, чтобы вы могли переназначить и повторно выбрать строки в случае перезагрузки с другими данными. Управление выбором объектов, как правило, полностью в ваших руках.