iOS TableView
от Apple и повторное использование ячеек убивают меня. Я искал, искал и изучал, но не могу найти хороших документов или хороших ответов. Проблема в том, что когда TableView
повторно использует ячейки, такие вещи, как галочки (принадлежность ячейки), установленные для выбранной ячейки, повторяются в ячейках ниже в представлении таблицы. Я понимаю, что повторное использование ячеек задумано из-за ограничений памяти, но если у вас есть список, скажем, из 50 элементов, и он начинает устанавливать дополнительные галочки там, где они не нужны, это делает все усилия бесполезными.
Все, что я хочу сделать, это установить галочку на выбранной ячейке. Я пробовал это, используя свой собственный класс ячеек и стандартные ячейки, сгенерированные классом TableView с шаблонной пластиной, но всегда получается одно и то же.
У Apple даже есть пример проекта под названием TouchCell, который вы можете загрузить из центра разработки, который должен показать другой способ установки галочки с использованием настраиваемой ячейки с элементом управления изображением слева. В проекте для источника данных используется объект словаря, а не массив с возможностью отключения звука, поэтому для каждого элемента существует строковое значение и проверяемое значение типа bool. Предполагается, что это значение типа bool проверено для установки флажка, чтобы можно было отслеживать выбранные элементы. Этот пример проекта также демонстрирует это дурацкое поведение, как только вы заполняете TableView более чем 15 ячейками. Повторное использование ячеек начинает ставить ненужные галочки.
Я даже пробовал поэкспериментировать с использованием действительно уникального идентификатора ячейки для каждой ячейки. Поэтому вместо того, чтобы каждая ячейка имела что-то вроде @ "Acell", я использовал статическое int, преобразованное в строку, чтобы ячейки получили @ "cell1", @ "cell2" и т. Д. Однако во время тестирования я мог видеть, что сотни новых ячеек, где генерируется при прокрутке, даже если в таблице было всего 30 элементов.
Это исправило проблему с повторением галочки, но я подозреваю, что использование памяти было слишком высоким.
Это как если бы ячейки, которые в настоящее время не находятся в видимой области таблицы, создаются заново, когда они прокручиваются обратно в поле зрения.
Кто-нибудь придумал элегантное решение этого раздражающего поведения?