Если вы получаете
«Неожиданно найденный ноль при развертывании необязательного значения»
Если существует некоторая проблема с идентификатором ячейки, индекс массива установлен неправильно. Вы можете проверить это оба сценария.
Я думаю, вы могли бы использовать метод
- (NSArray *)visibleCells
для своего UITableView. Это возвращает массив всех видимых ячеек. Затем вы можете пометить любые данные, которые «не видны» (то есть не в этом массиве), как хотите, чтобы при прокрутке назад они были обновлены.
Надеюсь, что это поможет
Вы уверены, что ячейка, выходящая за пределы экрана, - это именно то, что вы хотите поймать? Если вы хотите пометить элементы как прочитанные, это не похоже на правильный способ сделать это. Например, я мог бы очень быстро прокручивать таблицу, и я был бы очень удивлен, если бы вы отметили все, что было прочитано.
Что касается технической части, просто сохраните список ячеек, которые отображаются на экране (cellForRowAtIndexPath должен добавить ячейки в этот список), а в методе делегата scrollViewDidScroll
проверьте, не видны ли какие-либо из них.
Другая возможная идея: я помню, что для ячейки есть метод prepareForReuse
, Однако не уверен, когда он вызван.
Я бы попытался периодически проверять свойство indexPathsForVisibleRows UITableView. По самому большому пути индекса можно сделать вывод, что все предыдущие строки были прокручены.