Не пытайтесь поддерживать выбранное состояние в пользовательском интерфейсе.Сохраните его независимо, чтобы его можно было восстановить при перезагрузке таблицы.
Я бы вообще не рекомендовал хранить выбранные индексы или indexPaths, так как отношения между ними и вашей моделью могут измениться, если элементы будут вставлены / удалены / переупорядочены,(может не применяться в вашем случае, но все же лучше избежать этой потенциальной проблемы)
Вместо сохранения выбранных объектов модели, вы всегда будете точно знать, что выбрано, и ничто не может помешать этому.Просто сделайте изменяемый массив 'selected' и добавьте его, если необходимо.
didSelectRowAtIndexPath
- это место, где вы добавляете / удаляете объект модели из выбранного массива.cellForRowAtIndexPath
- это то место, где вы устанавливаете выбранное состояние ячейки в зависимости от выбранного массива.