UITableViewCell detailTextLabel永远不会显示

时间:2015-09-15 21:46:38

标签: ios objective-c uitableview

UITableViewCell detailTextLabel永远不会显示。

没有xib,没有故事板。我已经尝试过UITableViewCellStyleValue1,UITableViewCellStyleValue2和UITableViewCellStyleSubtitle。我没有使用子类UITableViewCells。我已经尝试过detailTextLabel.text和detailTextLabel.attributedText。我已经确认重复使用的ID在其他任何地方都没有使用过,我已经介入并确认它是正确的值。 textlabel有效,如果我设置了accessoryType,它也是如此。它只是拒绝显示的detailTextLabel。

值得注意的是,(cell == nil)条件是从不命中,我不明白为什么。我已经尝试将重复使用ID设置为乱码,只是为了看看它是否有任何效果但没有成功。我错过了什么?

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.tableView registerClass:[UITableViewCell class]
           forCellReuseIdentifier:@"reuseCellID"];
    [self setTitle:@"Title"];
}


- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *reuseCellID = @"reuseCellID";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseCellID
                                                            forIndexPath:indexPath];

    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1
                                     reuseIdentifier:reuseCellID];
        cell.detailTextLabel.text = @"detail (one)";
    }

    cell.textLabel.text = self.collection[indexPath.row];
    cell.detailTextLabel.text = @"detail (two)";
    /*NSMutableAttributedString *textLabelStr =
        [[NSMutableAttributedString alloc] initWithString:@"attributed detail"];
    cell.detailTextLabel.attributedText = textLabelStr;*/

    return cell;
}

1 个答案:

答案 0 :(得分:1)

if (cell == nil)永远不会被点击,因为您使用的是dequeueReusableCellWithIdentifier:forIndexPath:registerClass: forCellReuseIdentifier:

取消对registerClass: forCellReuseIdentifier:的调用并使用dequeueReusableCellWithIdentifier:(不使用forIndexPath:

然后你的代码会按你的意愿行事。

顺便说一句 - 除非您希望每个单元格都有相同的详细文字,否则请勿在{{1​​}}内设置detailTextLabel.text