2016-07-04 13 views
1

Derzeit bin ich dieses Ergebnis immer ein Etikett im Hinblick auf die Zelle, die eine ButtonRow mit durch Zugabe von:Swift Eureka: Textwert Hinzufügen ButtonRow

enter image description here

<<< ButtonRow("Email") { 
      $0.title = $0.tag 
      $0.presentationMode = PresentationMode.Show(...) 
      }.cellSetup { 
       cell, row in 

       let text = UILabel(frame: cell.frame) 
       text.frame.size.width = 0.909 * currentScreenWidth - 68 
       text.frame.origin.x = 68 
       text.textColor = UIColor(red: 142/255, green: 142/255, blue: 147/255, alpha: 1) 
       text.textAlignment = .Right 
       text.text = "[email protected]m" 
       cell.addSubview(text) 
} 

ich ButtonRow verwende, weil es, dass wenig ">" am Ende, und es funktioniert gut, wenn Sie eine neue Ansicht präsentieren und Controller programmgesteuert anzeigen.

Verwenden $0.value = "Some String" funktioniert nicht, wie es mit anderen Eigenschaften tut.

Gibt es das trotzdem, ohne manuell eine Etikettenansicht hinzufügen zu müssen? Es funktioniert in allen Bildschirmen, aber ich glaube nicht, dass es sehr sicher ist, diese Parameter manuell einzustellen.

Antwort

1

Die Implementierung von ButtonRow verwendet UITableViewCellStyle 'Standard' beim Initialisieren des Zellobjekts. Sie können eine Unterklasse von ButtonRow erstellen:

public final class DetailedButtonRowOf<T: Equatable> : _ButtonRowOf<T>, RowType { 
    public required init(tag: String?) { 
     super.init(tag: tag) 
     cellStyle = .value1 
    } 
} 
public typealias DetailedButtonRow = DetailedButtonRowOf<String> 

Dann können Sie die detailLabelText der Zeile angeben:

<<< DetailedButtonRow("Email") { row in 
    row.title = row.tag 
    row.presentationMode = .segueName(segueName: "AStoryboardSegue", onDismiss: nil) 
}.cellUpdate({ (cell, row) in 
    cell.detailTextLabel?.text = "[email protected]" 
}) 
Verwandte Themen