【问题标题】:Why is a UITableViewCell textLabel property optional?为什么 UITableViewCell textLabel 属性是可选的?
【发布时间】:2015-07-20 22:34:03
【问题描述】:

一个UITableViewCelldetailTextLabelshould be optional,也就是documented,但为什么textLabel属性是可选的?

【问题讨论】:

    标签: ios swift uitableview uikit


    【解决方案1】:

    简答:节省资源。 textLabel 属性是可选的,以允许延迟初始化 UILabel。换句话说,除非您实际尝试访问该属性,否则该属性将保持为零。

    您可以在调试器中通过检查您的 UITableViewCell 的实例来验证这一点:

    let cell = dequeueReusableCellWithIdentifier(MyCell.cellIdentifier, forIndexPath: indexPath) as! MyCell
    
    // check cell.textLabel here in the debugger. should be nil.
    
    cell.textLabel.text = "test"   // creates textLabel via lazy initialization 
    

    【讨论】:

      【解决方案2】:

      虽然没有正确记录,但它遵循相同的规则 - 必须设置正确的样式。也就是说,如果您使用自定义单元格 - 通常通过界面构建​​器配置,自定义单元格会被初始化 - 在这种情况下,不会将任何默认视图添加到单元格中,因为这会很浪费。

      如果您使用自定义单元格以外的任何其他样式,它将始终初始化第一个标签,因此您可以放心使用它(但在这种情况下显然无法更改定义,因此它始终被声明为可选)。

      【讨论】:

        猜你喜欢
        • 2011-02-06
        • 2015-09-06
        • 1970-01-01
        • 2010-12-23
        • 2011-11-28
        • 1970-01-01
        • 2023-01-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多