我有一个带静态单元格的UITableView。每个单元格都有一些自定义标签如果选择了单元格,则其中的标签会自动设置为突出显示。我想在发生这种情况时将文本更改为粗体。有大约50个标签,所以我不想有50个网点。我有什么想法可以做到这一点吗?
答案 0 :(得分:1)
好的,我明白了。如果我使用didSelectRowAtIndexPath,我将不得不创建超过50个出口或切换到动态内容。相反,我在子类中重写UILabel的突出显示属性并在那里进行更改。
class HighlightLabel: UILabel {
override var highlighted: Bool {
didSet {
if highlighted {
self.font = UIFont.boldSystemFontOfSize(self.font.pointSize)
} else {
self.font = UIFont.systemFontOfSize(self.font.pointSize)
}
}
}
}
答案 1 :(得分:0)
您应该提供委托方法:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell = tableView.cellForRowAtIndexPath(indexPath)
for view in cell.contentView.subviews{
if view.isKindOfClass(UILabel) {
//Magic
}
}
}
恢复正常:
override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
let cell = tableView.cellForRowAtIndexPath(indexPath)
for view in cell.contentView.subviews{
if view.isKindOfClass(UILabel) {
//Un-Magic
}
}
}