2015-06-12 2 views
-1

Ошибка: - использование ячейки с объявленным идентификатором.не удалось загрузить два вида таблицы в одном представлении контроллера

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

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

      if (cell == nil) { 

       // Load the top-level objects from the custom cell XIB. 

       NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"EHSRecordAccessGrantCell" owner:self options:nil]; 

       // Grab a pointer to the first object (presumably the custom cell, as that's all the XIB should contain). 

       cell = [topLevelObjects objectAtIndex:0]; 

      } 

     return cell; 

    } 

else if (tableView == tableView_accessRecordRequest) { 

     UITableViewCell *cell = [tableView_accessRecordRequest dequeueReusableCellWithIdentifier:@"EHSAccessRecordCell"]; 

     if (cell == nil) { 

      // Load the top-level objects from the custom cell XIB. 

      NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"EHSAccessRecordCell" owner:self options:nil]; 

      // Grab a pointer to the first object (presumably the custom cell, as that's all the XIB should contain). 

      cell = [topLevelObjects objectAtIndex:0]; 
     } 
      } 

    return cell; 

} 
+0

проверить идентификатор ячейки в XIB. –

+0

in else if condition мы получаем ошибку использования ячейки незаявленного идентификатора –

+0

Закрывающий брекет не используется ("}") в состоянии 'else if', когда вы возвращаете ячейку, она не определена. Отступ правильно введите код, вы увидите. Это должно быть после 'return cell; 'вместо ранее. – Larme

ответ

1

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

+0

, но первое условие выполняется иначе, если условие не выполняется, я бы хотел загрузить два вида таблицы сразу, помогите мне –

0

Проверьте свою раскадровку на предмет правильного идентификатора ячейки.

Выберите идентификатор ячейки прототипа таблицы в инспекторе идентификации.

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

1
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath 
{ 
     UITableViewCell *cell = nil; 
     if (tableView == tableView_grantRecordAccess) 
     { 
     cell = [tableView_grantRecordAccess dequeueReusableCellWithIdentifier:@"EHSRecordAccessGrantCell"]; 

     if (cell == nil) { 

      // Load the top-level objects from the custom cell XIB. 

      NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"EHSRecordAccessGrantCell" owner:self options:nil]; 

      // Grab a pointer to the first object (presumably the custom cell, as that's all the XIB should contain). 

      cell = [topLevelObjects objectAtIndex:0]; 

     } 

     return cell; 

} 
else if (tableView == tableView_accessRecordRequest) { 

    cell = [tableView_accessRecordRequest dequeueReusableCellWithIdentifier:@"EHSAccessRecordCell"]; 

    if (cell == nil) { 

     // Load the top-level objects from the custom cell XIB. 

     NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"EHSAccessRecordCell" owner:self options:nil]; 

     // Grab a pointer to the first object (presumably the custom cell, as that's all the XIB should contain). 

     cell = [topLevelObjects objectAtIndex:0]; 
    } 
    } 
    return cell; 

} 
+0

мы не можем загрузить второе представление таблицы else, если условие не выполняется. Я хотел бы загрузить сразу два вида таблицы. –

1

добавить эту строку выше, если условие соответственно // если (ячейка == ноль) {...}

// Для первого условия таблицы

if (![cell isKindOfClass:[EHSRecordAccessGrantCell 
class]])cell = nil; 

// Для второе состояние таблицы

if (![cell isKindOfClass:[EHSAccessRecordCell 
class]])cell = nil; 

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

+0

Мы получаем ошибку при использовании незаявленного EHSAccessRecordCell –

Смежные вопросы