detailtextlabel设置为nil

时间:2013-06-14 00:37:07

标签: objective-c uitableview null detailtextlabel

我有UITableViewCell个单元格style = UITableViewCellStyleValue1(此格式用于我在项目中使用的所有其他view controllers)。我根据其他SO帖子的建议,仔细检查了我的故事板中的cell identifiers。我仍然以detailTextLabel为零。还有别的我做错了吗?我观察到单元格总是被重用,即如果从不执行分配语句。那么,我如何获得UITableViewCell对象的样式来验证重用的单元格是否遵循相同的样式?

- (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 :(得分:0)

如果在故事板文件中将单元格定义为表格视图的原型单元格, dequeueReusableCellWithIdentifier始终根据需要实例化单元格 故事板文件。特别是,dequeueReusableCellWithIdentifier永远不会返回nil

因此,您应该检查原型单元格的属性,然后删除 if (cell == nil)部分来自您的代码。