Значок непрочитанной ячейки iOS

Я пытаюсь найти лучший способ реализовать синюю точку, как приложение Почта для непрочитанных ячеек. У меня есть синяя точка, но я просто пытаюсь понять логику, стоящую за ней. Таблица заполняется XML-файлом. Прямо сейчас у меня установлено так, что когда вызывается метод синтаксического анализа, он устанавливает логическое значение NO в объекте данных. Затем, когда табличное представление заполняется само, если логическое значение равно NO, изображение отображается, а затем во время didSelectRowAtIndex я устанавливаю логическое значение в значение YES, и изображение исчезает. Проблема заключается в том, что каждый раз, когда я обновляю таблицу, xml повторно анализируется, а переменная экземпляра сбрасывается в NO, и пользователь информируется о том, что ячейка не была нажата. Как мне это исправить? Какова лучшая логика вокруг этого?

2 ответа

Вместо повторного синтаксического анализа XML каждый раз, когда вы обновляете таблицу, анализируйте ее один раз, а затем сохраняйте данные (или массив словарей, или что-то еще), которые он анализировал, как переменную внутри объекта.

Таким образом, состояние "прочитанной" синей точки или "непрочитанного" будет сохраняться между перезагрузками таблицы.

Михаэль Даутерманн хорошо говорит о своем ответе. В вашей ситуации, когда канал часто обновляется, вы можете сохранить набор, в котором вы будете отслеживать прочитанные элементы, сохраняя их идентификаторы (какими бы они ни были). Тогда в вашем tableView:cellForRowAtIndexPath: метод, вы просто проверяете, существует ли идентификатор текущего элемента в наборе, и не показывает "новое" изображение, если оно есть.

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