当您使用UITableViewCell
的内置样式(字幕,右侧详细信息等)时,您可以使用textLabel
和detailTextLabel
非常轻松地访问文本标签在UITableViewCell
上,无论您选择哪种风格。我利用这个优势来实现可重用的代码,允许我将特定样式应用于我的所有静态单元格。但现在我想将它们全部转换为自定义样式单元格,但是使用这种样式我仍然只有两个标签。我的问题是,是否可以手动设置自定义单元格的textLabel
和detailTextLabel
属性?如果是这样,我不必更改我的代码,我只需要设置标签属性。否则,我将不得不改变我的所有代码,以针对每个单独的单元格定位,这将非常混乱。
有关我正在做的事情的一个示例,我有一个在UITableViewCell
中接受的方法,在该方法中我可以启用或禁用该单元格,将标签文本颜色更改为黑色或浅灰色适当。如果我无法访问textLabel
和detailTextLabel
属性,我将需要添加if语句以将单元格参数与我的单元格出口进行比较,以了解我需要更改哪些标签。< / p>
答案 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
中添加所有视图。这是设计的方式,不推荐使用现有的textField
和detailTextField
,因为它可能会导致内置布局逻辑的未定义行为。 (我还没有使用它们。它们可能运作良好。但我不会冒险)
如果您想避免修补所有现有代码,可以尝试子类并将属性覆盖到由您创建的标签。
@interface CustomCell1 : UITableViewCell
@end
@implementation CustomCell1
{
UILabel* _your_custom_label1;
}
- (UILabel*)textLabel
{
return _your_custom_label1;
}
@end