Вы не можете реально контролировать, когда он вызывается.Он вызывается каждый раз, когда ваше табличное представление хочет отобразить новую ячейку.Вы используете indexPath, чтобы определить, что поместить в эту ячейку.Он вызывается хотя бы один раз для каждой ячейки на экране (иногда больше, если таблица прокручивается вверх и вниз).
Вам не нужно создавать временный массив при каждом вызове этой функции, просто используйте [map annotations]
напрямую:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// There will be one row per annotation
return [[map annotations] count]
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Put the text from this annotation into this cell
cell.textLabel.text = [[[map annotations] objectAtIndex:indexPath.row] title];
return cell;
}
Надеюсь, я понял ваш вопрос.Если нет, пожалуйста, сообщите мне в комментариях ниже!