2016-05-26 7 views
0

Ich versuche, die Ganzzahlwerte anstelle von Float anzuzeigen. Ich habe folgendes versucht:Anzeigen ganzzahliger Werte auf SliderRow

section.append(SliderRow() { 
     $0.title = "Number of items" 
     $0.tag = "numberOfItems" 
     $0.minimumValue = 1 
     $0.maximumValue = 10 
     $0.steps = 10 
     $0.value = 5 
     $0.onChange { row in 
      let isInteger = floor(row.value!) == row.value! 
      if (!isInteger) { 
       row.value = floor(row.value!) 
      } 

      let formattedString = String(format: "%.0f", row.value!) 
      row.cell.valueLabel.text = formattedString 
     } 
    }) 

formatiertString zeigt die Werte an, die ich möchte, aber ich kann sie nicht auf dem Bildschirm anzeigen. Ich kann auf alle anderen Attribute nach row.cell zugreifen. Ich ändere zum Beispiel die Textfarbe, aber nicht den Text. Ich schätze, ich setze den Text, aber es wird kurz überschrieben.

Gibt es eine Möglichkeit, den Schieberegler ganzzahlige Werte anzeigen zu lassen?

Danke.

+0

Können Sie bitte etwas mehr Code, wo Sie 'UILabel' Text oder etwas abhängig ist? –

+0

@ SohilR.Memon: Ich habe es mit dem vollständigen Code aktualisiert, den ich für die Zeile verwende. Ich hoffe, das hast du gemeint. Ich denke, das ist der relevante Code, den ich habe, aber lassen Sie es mich wissen, wenn ich etwas anderes untersuchen sollte. –

+0

Kannst du eine statische 'String' platzieren, um zu überprüfen, ob sie angezeigt wird oder nicht? –

Antwort

0

Um das Problem zu lösen klonte ich das Eureka-Repository. Es stellte sich heraus, dass ich Recht hatte, die Werte zu überschreiben. Um es zu testen ich den Text auf einen konstanten Wert innerhalb onChange Handler gesetzt, fügte dann print-Anweisungen in der SliderRow Quellcode in valuechanged Funktion:

if shouldShowTitle() { 

     print("current value: \(valueLabel.text)") 

     valueLabel.text = "\(row.value!)" 

     print("updated value: \(valueLabel.text)") 
    } 

Der Ausgang sah wie folgt aus:

aktuelle Wert: optional ("xyz")

aktualisierte Wert: optional ("3.0")

aktuelle Wert: optional ("xyz")

aktualisierten Wert: Optional ("5.0")

Also habe ich mir eine SliderRowInt Klasse, die ganzen Zahlen verwendet:

public final class SliderRowInt: Row<Int, SliderCellInt>, RowType { 

    public var minimumValue: Int = 0 
    public var maximumValue: Int = 10 
    public var steps: UInt = 20 

    required public init(tag: String?) { 
     super.init(tag: tag) 
    } } 

nun die Integer-Version verwenden ich. Vielleicht nicht die eleganteste Lösung, aber es hat gut für mich funktioniert.

Es gibt ein ähnliches Problem mit der StepperRow, die ich auf die gleiche Weise gelöst habe.

ich in beiden Klassen in meine geklonte Repository falls jemand überprüft trifft das gleiche Problem, das sie hier gefunden werden kann: https://github.com/volkanx/Eureka/

Verwandte Themen