Ячейки uitableview пустые, но правильный текст в консоли

У меня есть две проблемы

1) если я не закомментирую if(cell==nil), то текстовые метки не отображаются в одном из моих просмотров таблиц на моем телефоне.

2) с другой у меня такая же проблема, но если я это закомментировал, то текст, похоже, не меняется. Однако если я

 NSLog(@"did select  and the text is %@",[tableView cellForRowAtIndexPath:indexPath].textLabel.text);

Я получаю вывод "выбрал, и текст" сайт номер 1 "", и это то, что я хочу, однако текст, который я вижу на экране телефона, не тот, который я вижу в консоли, может кто-нибудь помочь? вот мой код:

мой идентификатор ячейки в инспекторе атрибутов таблицы: "selcell"

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    int row=indexPath.row;
    NSLog(@"number in sites is %d cell for row %@",[sites count],[sites objectAtIndex:row]);

    static NSString *CellIdentifier = @"selcell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
   // if(cell==nil)
   // {
        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.textLabel.text=[NSString stringWithFormat:@"site number %@",[sites objectAtIndex:row]];
   // }
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"did select  and the text is %@",[tableView cellForRowAtIndexPath:indexPath].textLabel.text);
    [self.delegate didSelectSite:[sites objectAtIndex:indexPath.row]];
}

1 ответ

Решение

В табличном представлении есть эта концепция повторного использования ячеек. И ячейка блока if ==nil запускается только тогда, когда в табличном представлении нет ячейки для повторного использования.

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

Выньте следующую строку из блока if и посмотрите, работает ли она:

    cell.textLabel.text=[NSString stringWithFormat:@"site number %@",[sites objectAtIndex:row]];
Другие вопросы по тегам