UITableViewCell - загрузить 25 ячеек - не использовать повторно - PullRequest
2 голосов
/ 09 ноября 2010

У меня есть 25 ячеек таблицы, и я хочу загрузить их все вместе, без повторного использования.

Любая идея?

Ответы [ 2 ]

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

Если вы хотите избежать переработки ячеек таблицы, вы можете просто избежать вызова dequeueReusableCellWithIdentifier: в вашем методе tableView:cellForRowAtIndexPath:.

Если вы хотите выполнить однократную первоначальную загрузку всех ваших ячеек, выможет сделать что-то подобное в методе init источника данных вашей таблицы:

// myCellArray is an instance var of type NSMutableArray.
myCellArray = [NSMutableArray new];
for (int i = 0; i < 25; ++i) {
  NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];
  UITableViewCell *cell = [self tableView:tV cellForRowAtIndexPath:indexPath];
  [myCellArray addObject:cell];
}

Это сохранит ячейки в памяти, поскольку они будут сохранены для вас myCellArray.

Чтобы быть более эффективным, ваш cellForRowAtIndexPath: метод может выглядеть примерно так:

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  if ([myCellArray count] > indexPath.row) {
    return [myCellArray objectAtIndex:indexPath.row];
  }
  return [self createCellAtRow:indexPath.row];
}

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

0 голосов
/ 09 ноября 2010

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

И если вам нужно загрузить все ячейки одновременно, вы можете позвонить

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

в viewDidLoad для каждого необходимого indexPath.

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