2013-06-14 2 views
0

У меня есть UITableViewCell ячеек с style = UITableViewCellStyleValue1 (этот стиль используется во всех других view controllers, которые я использую в своем проекте). Я дважды проверил cell identifiers в своей раскадровке в соответствии с предложениями других сообщений SO. Тем не менее я получаю detailTextLabel как ноль. Есть ли что-то еще, что я делаю неправильно? Я заметил, что ячейки всегда повторно используются. Если оператор для распределения никогда не выполняется. Итак, как мне получить стиль объекта UITableViewCell, чтобы убедиться, что повторно используемые ячейки соответствуют одному и тому же стилю?detailtextlabel set to nil

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath  *)indexPath 
{ 
    static NSString *CellIdentifier = @"CellForDevice"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier]; 
    } 
    NSLog(@"reuse ID : %@",cell.reuseIdentifier); 
    // Configure the cell... 
    NSArray* row = [self.listOfItems objectAtIndex:indexPath.row]; 
    NSString* str = [row objectAtIndex:0]; 
    NSString* status = [row objectAtIndex:1]; 
    cell.textLabel.text = str; 

    if(cell.detailTextLabel == nil) 
     NSLog(@"detailTextLabel nil");//didn't expect this would execute 

    cell.detailTextLabel.text = status; 
    cell.detailTextLabel.backgroundColor = [UIColor greenColor]; 
    NSLog(@"status %@ ",status); 
    return cell; 
} 
+1

Вы определили ячейку в качестве ячейки прототипа в своем файле раскадровки? В этом случае ячейка всегда загружается из раскадровки, и вы должны проверить свойства ячейки прототипа. –

+0

да, что решил. Благодаря тонну. – user2103008

+0

Хорошо, отлично. Я добавил свой комментарий в качестве официального ответа. –

ответ

0

Если клетка определяется как прототип ячейки для представления таблицы в раскадровке файле, dequeueReusableCellWithIdentifier всегда конкретизирует клетки по мере необходимости из раскадровки файла . В частности, dequeueReusableCellWithIdentifier никогда не возвращается nil.

Вы должны поэтому проверить свойство ячейки прототипа, и вы можете удалить if (cell == nil) части из вашего кода.