美文网首页iOS-Objective-C
TableView的cell的detailTextLabel不显

TableView的cell的detailTextLabel不显

作者: 追沐 | 来源:发表于2017-08-05 14:13 被阅读22次

问题

对于初学者来说,写tableView的时候有没有遇到过在这样的问题:TableView的cell的detailTextLabel不显示的问题。

关于这两个属性

detailTextLabel系统的TableView有这个两个属性,一个textLabel,一个detailTextLabel,如下官方文档:

// default is nil.  label will be created if necessary.
@property (nonatomic, readonly, strong, nullable) UILabel *textLabel NS_AVAILABLE_IOS(3_0); 

// default is nil.  label will be created if necessary (and the current style supports a detail label).
@property (nonatomic, readonly, strong, nullable) UILabel *detailTextLabel NS_AVAILABLE_IOS(3_0); 

问题总结

文档上说default is nil,意思是使用默认的cell的时候,这两个label是空的?还是说这个cell在不用的时候是nil,用的时候会自己创建,这个比较模棱两可。

如果你要使用系统的cell实现textLabel和detailTextLabel显示的效果的时候,创建cell的时候将cell的类型指定为UITableViewCellStyleDefault,这时候你会发现,textLabel能显示出来,而detailTextLabel是显示不出来的。所以说default is nil?

所以如果要实现这种效果你需要将cell的类型指定为UITableViewCellStyleSubtitle类型。

// Left aligned label on top and left aligned label on bottom with gray text (Used in iPod).
UITableViewCellStyleSubtitle    

使用UITableViewCellStyleSubtitle类型的cell就能显示出来detailTextLabel的内容了,但是Used in iPod是什么鬼?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellId = @"AddressSelectedController_cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellId];
    }
    
    DDSearchPoi *poi = self.dataSource[indexPath.row];

    cell.textLabel.text = poi.name;
    cell.detailTextLabel.text = poi.address;

    return cell;
}

相关文章

网友评论

    本文标题:TableView的cell的detailTextLabel不显

    本文链接:https://www.haomeiwen.com/subject/zyivlxtx.html