Вопрос по objective-c – Почему tableView dequeueReusableCellWithIdentifier: CellIdentifier возвращает ноль?

1

Я использую xCode 4.2 для создания приложения для iPhone.

Я не знаю, почему это утверждениеUITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; иногда ноль, а не другие времена. Я собираюсь изложить два сценария: первый, где ячейка не равна нулю, и второй, где она равна нулю. Позвольте мне начать с примера кода, совместно используемого обоими сценариями, из моего WSCSessionTable, который наследует UITableViewController:

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
     // we have null
    }
return cell;
}

Scenario 1 - Cell is not null

Ячейка не нулевая, и все работает нормально, когда я настраиваю свою раскадровку так Navigation Controller to WSCSessionTable

Scenario 2 - Cell is null

Ячейка всегда пуста, когда я настраиваю свою раскадровку так:

Activate WSCSession via button tap

Это обработчик события для кнопки, которая создает экземпляр таблицы.

- (IBAction)goToSession:(id)sender
{
    wscAppDelegate *appDelegate = (wscAppDelegate *)[[UIApplication sharedApplication] delegate];
    UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
    wscSessions *childView = [storyboard instantiateViewControllerWithIdentifier:@"sessionstable"];
//    wscSessions *childView = [storyboard instantiateViewControllerWithIdentifier:@"sessionstable"];
    childView._arrData = appDelegate._arrSession;
    childView._arrSpeaker = appDelegate._arrSpeaker;
    childView.title = @"SEssions";
    [self.navigationController pushViewController:childView animated:YES]; 
    }

Кто-нибудь знает, почему ячейка всегда нулевая в сценарии 2? Это вызывает проблемы в другом месте моего кода.

Additional Info Два человека, которых я комментировал, сказали мне, чтобы убедиться, что идентификатор ячейки установлен на «ячейку». Вот снимок экрана ... это правильно? Это как в сценарии 1, так и в сценарии 2. enter image description here

@Inafziger - я добавил снимок экрана в дополнительной информации. Правильно ли я установил идентификатор ячейки? John
Проверьте идентификатор ячейки в сцене раскадровки, которая не работает. Непонятно, есть ли у вас две сцены или вы просто перестраиваете раскадровку. jrturton
Я перестраиваю свою раскадровку. Идентификатор ячейки есть. John
@Jrturton говорил о том, чтобы убедиться, что во втором идентификаторе ячейки ячейки табличного представления (которая установлена в раскадровке) установлено значениеCell. lnafziger
Вы создаете экземпляр объекта ячейки в вашемif(cell == nil) проверять? Barjavel

Ваш Ответ

0   ответов

Похожие вопросы