2016-07-28 195 views
-4

我有一个静态单元格的UITableView。每个单元都有一些自定义标签。如果选中单元格,则其中的标签会自动设置为突出显示。我想在发生这种情况时将其文本更改为粗体。大约有50个标签,所以我不想拥有50个网点。任何想法我可以做到这一点?突出显示时将UILabel字体更改为粗体

+1

您应该继承该单元格以更改选定的标签字体。 – deadbeef

回答

0

好吧,我想通了。如果我使用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) 
      } 
     } 
    } 
} 
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 
      } 
     } 
} 
+0

没有。这需要创建网点。 –

相关问题