Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Дублированные строки в табличном представлении

Автор вопроса: agapitocandemorОтветов: 1

Я знаю, что есть подобные вопросы, но они не работают для меня!

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

Вот код cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *cell = (CustomCell *)
[tableView dequeueReusableCellWithIdentifier:CellClassName];

if (cell == nil)
{
    NSArray *topLevelItems = [cellLoader instantiateWithOwner:self options:nil];
    cell = [topLevelItems objectAtIndex:0];
}

cell.subnavName.text = [array objectAtIndex:[indexPath section]];

UIImageView *background = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"subnavigation_off.png"]];

[cell setBackgroundView:background];

background = [[UIImageView alloc]
              initWithImage:[UIImage imageNamed:@"subnavigation_on.png"]];

cell.selectedBackgroundView = background;
[background release];

return cell;

} Что я могу сделать, чтобы избежать повторного добавления текста из UILabel в мои ячейки, когда пользователь возвращается на эту вкладку из другой? Я читал что-то об использовании тега, но не могу найти способ сделать это.

Большое спасибо!

iosuitableviewuilabel

Ответы

Ответ 1 · рейтинг 1 · AliSoftware

Ооооочень классическая ошибка.

Проблема (как и всегда в вопросах TableView здесь) заключается в том, что вы неправильно используете механизм повторного использования TableViewCells.

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

Затем, вне "если" - то есть, является ли ячейка вновь выделенной или ячейкой, которая была переработана (из ранее выделенной, но больше не используемой ячейки), во всех случаях - заполните ячейку определенным содержимым это зависит от indexPath (текст, изображение и т. д.)

Прочтите Руководство по программированию табличных представлений в документации Apple и выполните поиск в StackOverflow. Там много вопросов о табличных представлениях, и все они имеют одну и ту же проблему.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы