dequeueReusableCellWithIdentifier никогда не возвращает мою повторно используемую ячейку - PullRequest
0 голосов
/ 26 февраля 2012

У меня есть UITableViewController с большим количеством ячеек, но все они имеют одинаковую конфигурацию - отличается только содержимое ячейки. Вот мой tableView:cellForRowAtIndexPath: метод в моем UITableViewController :

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"WSTableViewCell";

    WSTableViewCell *cell = (WSTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[WSTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }

    WSObject *item = [self.fetchedResultsController objectAtIndexPath:indexPath];
    [cell.textLabel setText:item.title];

    return cell;
}

Вот initWithStyle:reuseIdentifier: в моем пользовательском UITableViewCell :

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
        [self.textLabel setFont:[UIFont boldSystemFontOfSize:12]];
        [self.textLabel setTextColor:[UIColor colorWithRed:100.0/255.0 green:100.0/255.0 blue:100.0/255.0 alpha:1.0]];
        [self.textLabel setHighlightedTextColor:[UIColor colorWithRed:100.0/255.0 green:100.0/255.0 blue:100.0/255.0 alpha:1.0]];
        [self.textLabel setNumberOfLines:2];
    }
    return self;
}

Я только что заметил, что этот initWithStyle:reuseIdentifier: вызывается для каждой ячейки в табличном представлении, и что dequeueReusableCellWithIdentifier: в UITableViewController всегда возвращает nil . Насколько я понимаю этот механизм с многоразовыми ячейками, этот вид ячейки должен быть инициализирован только один раз, когда я использую один и тот же идентификатор ячейки. Что мне здесь не хватает?

1 Ответ

1 голос
/ 26 февраля 2012

Ячейки используются повторно только тогда, когда они прокручиваются за пределами экрана.Допустим, на одном экране показано 11 ячеек, вы выделите 11 ячеек, которые повторно используются при прокрутке.

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