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;
}

最佳答案

永远不会命中if (cell == nil),因为您使用dequeueReusableCellWithIdentifier:forIndexPath:registerClass: forCellReuseIdentifier:

摆脱对registerClass: forCellReuseIdentifier:的调用,并使用dequeueReusableCellWithIdentifier:(不使用forIndexPath:

然后,您的代码将完成您所期望的。

顺便说一句-不要在detailTextLabel.text内设置if (cell == nil),除非您希望每个单元格都具有相同的详细信息文本。

关于ios - UITableViewCell detailTextLabel永远不会显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32596215/

10-10 21:11