Индикатор раскрытия исчезает? - PullRequest
2 голосов
/ 27 мая 2009

У меня есть UITableView, который использует пользовательские UITableViewCell s для отображения некоторой информации. Я хотел бы добавить UITableViewCellAccessoryDisclosureIndicator к клеткам.

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

Вещи, которые я пробовал:

  1. cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator];
  2. [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
  3. accessoryTypeForRowWithIndexPath:

Кто-нибудь когда-нибудь такое случался?

1 Ответ

4 голосов
/ 27 мая 2009

Это может произойти, потому что вы устанавливаете тип аксессуара вне кэшированного теста ячейки:

 static NSString *CellIdentifier = @"UIDocumentationCell";
        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
        }
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        [cell setText:mytext];

Чем лучше, ИМХО так:

    static NSString *CellIdentifier = @"UIDocumentationCell";
        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        }
        [cell setText:mytext];

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

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