Дублированные строки в табличном представлении - PullRequest
0 голосов
/ 10 ноября 2011

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

У меня дублируются строки, и текст 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 в мои ячейки, когда пользователь возвращается на эту вкладку из другой?Я читал что-то об использовании тега, но не могу найти способ сделать это.

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

1 Ответ

1 голос
/ 10 ноября 2011

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

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

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

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

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

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