Перепечатанный текст ячейки в UITableViewCell - PullRequest
1 голос
/ 15 ноября 2010

В метод cellForRowAtIndexPath: класса UITableViewController Я использую следующий код, чтобы показать ячейку, содержащую UITextView.

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

Что я могу сделать, чтобы решить эту проблему?

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];    
if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

cell.contentView.bounds = CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height);
cell.selectionStyle = UITableViewCellSelectionStyleNone;

UITextView *textView = [[UITextView alloc] initWithFrame:cell.contentView.bounds];
                textView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
textView.editable = NO;
textView.scrollEnabled = YES;
textView.backgroundColor = [UIColor clearColor];
textView.font = [UIFont fontWithName:@"Helvetica" size:14.0];
textView.text = self.description;

[cell.contentView addSubview:textView];
[textView release];

1 Ответ

5 голосов
/ 15 ноября 2010

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

Вам следует переместить создание текстового представления (и добавить его в ячейку) в блок if (cell == nil). Внутри этого блока также дайте текстовому представлению уникальный tag и используйте это свойство tag для доступа к текстовому представлению снаружи блока. Посмотрите пример кода Apple для просмотра этого шаблона, он часто используется.

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