Поведение dequeueReusableCellWithIdentifier изменено для ячеек прототипа? - PullRequest
9 голосов
/ 30 октября 2011

В iOS5, используя ARC и прототип ячейки для tableView на раскадровке, можно ли заменить код ниже:

static NSString *CellIdentifier = @"Cell";

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

// Configure the cell...
return cell;

этим простым кодом ??:

UITableViewCell *cell = [tableView 
  dequeueReusableCellWithIdentifier:@"Cell"];
return cell;

Я виделэто по этой ссылке:

http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

Спасибо заранее!

Arildo

Ответы [ 2 ]

8 голосов
/ 06 ноября 2011

Конечно, ваш код верен, раскадровка автоматически выделяет новые ячейки, этот код прекрасно работает:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{   
    RoadbookCell *cell = (RoadbookCell *)[tableView dequeueReusableCellWithIdentifier:@"RoadbookCell"];

    //Configure cell
    //[cell.lab1 setText:@"Test"];

    return cell;
}
3 голосов
/ 31 мая 2012

Так Apple намерена использовать его, но я рекомендую против. Существует ошибка, из-за которой dequeueReusableCellWithIdentifier возвращает nil, когда VoiceAssist включен на устройстве. Это означает, что ваше приложение будет аварийно завершено для пользователей с включенной этой опцией. Это все еще проблема с iOS 5.1.1

Более подробную информацию и обходной путь можно найти здесь:

http://hsoienterprises.com/2012/02/05/uitableview-dequeuereusablecellwithidentifier-storyboard-and-voiceover-doesnt-work/

В последнем абзаце есть обходной путь

...