2016-07-28 92 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

沒有。這需要創建網點。 –

相關問題