是否可以设置自定义单元格的textLabel?

时间:2014-07-11 15:42:14

标签: ios objective-c uitableview

当您使用UITableViewCell的内置样式(字幕,右侧详细信息等)时,您可以使用textLabeldetailTextLabel非常轻松地访问文本标签在UITableViewCell上,无论您选择哪种风格。我利用这个优势来实现可重用的代码,允许我将特定样式应用于我的所有静态单元格。但现在我想将它们全部转换为自定义样式单元格,但是使用这种样式我仍然只有两个标签。我的问题是,是否可以手动设置自定义单元格的textLabeldetailTextLabel属性?如果是这样,我不必更改我的代码,我只需要设置标签属性。否则,我将不得不改变我的所有代码,以针对每个单独的单元格定位,这将非常混乱。

有关我正在做的事情的一个示例,我有一个在UITableViewCell中接受的方法,在该方法中我可以启用或禁用该单元格,将标签文本颜色更改为黑色或浅灰色适当。如果我无法访问textLabeldetailTextLabel属性,我将需要添加if语句以将单元格参数与我的单元格出口进行比较,以了解我需要更改哪些标签。< / p>

2 个答案:

答案 0 :(得分:7)

你确定可以!只需将标签的getter实现,即可重定向到自定义单元格的标签。

- (UILabel *)textLabel {
    return self.myCustomCellTextLabel;
}

- (UILabel *)detailTextLabel {
    return self.myCustomCellDetailTextLabel;
}

对于使用 SWIFT 4

的人
    var textLabel: UILabel? {
    return myCustomCellTextLabel
}

var detailTextLabel: UILabel? {
    return myCustomCellDetailTextLabel
}

答案 1 :(得分:0)

在自定义单元格中,您必须在contentView中添加所有视图。这是设计的方式,不推荐使用现有的textFielddetailTextField,因为它可能会导致内置布局逻辑的未定义行为。 (我还没有使用它们。它们可能运作良好。但我不会冒险)

如果您想避免修补所有现有代码,可以尝试子类并将属性覆盖到由您创建的标签。

@interface CustomCell1 : UITableViewCell
@end
@implementation CustomCell1
{
    UILabel* _your_custom_label1;
}
- (UILabel*)textLabel
{
    return _your_custom_label1;
}
@end