Выделить невидимую ячейку внутри коллекции

Ну, можно спросить, зачем тебе это делать?

У меня есть представление коллекции внутри некоторого представления, где пользователь может выбрать ячейку. Затем этот выбор сохраняется, и позже, когда пользователь хочет снова войти в это представление, он должен иметь возможность увидеть свой предыдущий сохраненный выбор.

Если его выбор был в конце представления коллекции, я не смогу загрузить представление коллекции с его предыдущим выбором, потому что:

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 установите изменения / обновления, и запомненные индексы могут стать недействительными с новым / другим набором данных. Таким образом, вы должны помнить выбор объектов "реального мира" (где вы заполняете конкретные данные ячейки, например, заголовок и т. Д.), Например, запоминая идентификаторы объектов по вашему выбору, чтобы вы могли переназначить и повторно выбрать строки в случае перезагрузки с другими данными. Управление выбором объектов, как правило, полностью в ваших руках.

Другие вопросы по тегам