2013-12-11 2 views
0

Я пытаюсь отобразить текст метки ячейки, используя имя тега. На моей основной плате в ячейке по умолчанию я добавил lable и добавил имя тега как 70. Я пытаюсь загрузить эти данные, используя метод ниже. Ничего не видно. Пожалуйста, помогите мне.ViewwithTag не извлекает метку ячейки

[Crop Cropname] is not empty, cell.textLabel.text = [crop cropName] works fine.I am just trying to format things. 




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

     if (cell == nil) { 
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] ; 
      cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
     } 
     // Configure the cell... 

     Crop * crop = [filteredItemist objectAtIndex:[indexPath row]]; 

     cell.detailTextLabel.text = [NSString stringWithFormat:@"%d",crop.cropId]; 

     UILabel *cropNameLabel = (UILabel *)[cell viewWithTag:70]; 
     cropNameLabel.text = [crop cropName]; 


     return cell; 

    } 
+0

Если вы создали ячейку в StoryBord, используйте эту ячейку. –

+0

В ячейке истории была ячейка по умолчанию, когда я добавил контроллер таблицы. Ячейка работает нормально, если я заполняю данные, используя cell.textLabel.text. viewwithtag не делает каких-либо изменений каким-то образом. – user2569524

+0

Вы делаете неправильно. Если вы добавите TableView в xib, он появится без ячейки. Поэтому лучше создайте ячейку отдельно и добавьте UILabel, чтобы только тогда использовать эту ячейку в 'cellForRowAtIndexPath', не инициализируйте снова какую-либо ячейку в' cellForRowAtIndexPath'. –

ответ

1

Вы должны проверить, что сотовый идентификатор ячейки, который вы используете в раскадровке использует «Cell» идентификатор повторного использования, который используется для ячейки из очереди.

Что могло случиться, что вы на самом деле не получают клетки от XIb, потому что он не имеет ячейки с этим идентификатором, но затем обрабатывать нулевую ячейку, создав новую ячейку:

if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] ; 
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    } 

К сожалению, эта новая ячейка не имеет добавленной метки с тегом 70, который вы добавили в раскадровку ...

+0

Удалив этот код и добавив идентификатор многократного использования ячейки. Я могу получить записи сейчас. Но удалит ли этот код проблемы? – user2569524

+1

Согласно документации, , используя следующий метод: Tableview dequeueReusableCellWithIdentifier: forRowAtIndexPath: всегда возвращает ячейку из Tableview, если вы поставили перед собой ячейку в раскадровке с этим идентификатором. Если вы это сделаете, удаление этого кода не вызовет никаких проблем. – tjboneman

+0

большое спасибо. как я могу выбрать ячейку на другом контроллере таблицы. Я получаю сообщение об ошибке Несбалансированные вызовы для начала/окончания перехода на внешний вид контроллера. в этом случае – user2569524

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