2016-07-28 54 views
-4

Ich habe eine UITableView mit statischen Zellen. Jede Zelle hat einige benutzerdefinierte Bezeichnungen. Wenn die Zelle ausgewählt ist, werden die darin enthaltenen Beschriftungen automatisch hervorgehoben. Ich möchte ihren Text in Fettschrift ändern, wenn dies geschieht. Es gibt ungefähr 50 Labels, also möchte ich nicht 50 Outlets haben. Irgendwelche Ideen, wie ich das erreichen kann?Ändern UILabel Schriftart zu fett, wenn markiert

+1

Sie sollten die Zelle möglicherweise ableiten, um die Beschriftungsschriftart zu ändern, wenn sie ausgewählt ist. – deadbeef

Antwort

0

Okay, ich es herausgefunden. Wenn ich didSelectRowAtIndexPath verwende, müsste ich mehr als 50 Ausgänge erstellen oder zu dynamischen Inhalten wechseln. Stattdessen überschreibe ich die hervorgehobene Eigenschaft von UILabel in einer Unterklasse und führe die Änderungen dort durch.

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

Sie sollten die delegierte Methode zur Verfügung gestellt:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     let cell = tableView.cellForRowAtIndexPath(indexPath) 

     for view in cell.contentView.subviews{ 
      if view.isKindOfClass(UILabel) { 
       //Magic 

      } 
     } 
} 

Und wieder normal zurückzukehren:

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

Nein. Dies erfordert das Erstellen von Steckdosen. –