iOS: ReusableCell меняет мои данные при повторном использовании - PullRequest
1 голос
/ 29 января 2011

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

Проблема, с которой я столкнулся, заключается в том, что мне показывают квадрат UIImageView с цветом фона, уникальным для этой строки. И когда устройство поворачивается или представление таблицы прокручивается вверх или вниз (таким образом, удаляя неиспользуемые ячейки), цвета меняются на один из других.

Я не совсем уверен, как это остановить. В настоящее время

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

вызывается, и в этом он определяет ориентацию, создает идентификатор ячейки, создает ячейку и добавляет вещи в ячейку.

Любая помощь будет отличной!

Ответы [ 3 ]

0 голосов
/ 10 марта 2011

Хм, так вот как работает вытеснение. Несмотря на то, что концептуально это 11 строк, на самом деле iOS позволяет вам обманывать и просто использовать несколько из них, поэтому он работает намного быстрее.

Вам просто нужно помнить, что если вы запросили в табличном представлении ячейку, находящуюся в очереди, вам все равно придется перенастроить ее, чтобы она показала правильные данные.

Если ваша проблема в том, что ваши клетки на самом деле выполняют внутреннюю обработку ... не делайте этого. Переместите этот кусок кода в другое место. ;)

0 голосов
/ 06 сентября 2013

Для создания ячеек tableview необходимо использовать уникальный идентификатор ячейки, но все ячейки в этом представлении таблицы нуждаются в том же идентификаторе, поэтому:

static NSString *cellIdentifier = @"YOURINDETIFIER";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];

Теперь вам нужно настроить свойства ячеек.

Если вы используете пользовательскую ячейку, не забудьте перенастроить ВСЕ подпредставления, иначе вы получите артефакты из ранее использованных ячеек.

Можете ли вы опубликовать, что вы делаете в cellForRowAtIndexPath?

0 голосов
/ 10 марта 2011

Что вы используете в качестве идентификатора ячейки?Используйте что-то уникальное, например

NSString *cellIdentifier = someObject.someProperty;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

, где someObject.someProperty может быть, например, item.title

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...