2009-12-02 5 views
11

Der Wert des UISlider wird derzeit als Gleitkommazahl angezeigt. Wie zeige ich es als Integer an?So zeigen Sie den Wert von UISlider als Ganzzahl an

sliderCtl = [[UISlider alloc] initWithFrame:frame]; 
    sliderCtl.minimumValue = 1; 
    sliderCtl.maximumValue = 15; 
    sliderCtl.continuous = NO; 
    sliderCtl.value = 1; 
    [sliderCtl setShowValue:YES]; 

Antwort

2

Sie könnten gestutzt oder um den Wert aus dem Schieber und dann aktualisieren, um das Nutzer-Feedback über die Änderung zu geben (es scheint auf den ganzzahligen Wert zu schnappen, wenn der Benutzer).

+0

die Lösung ist, muss ich es selbst aktualisieren? – RAGOpoR

+0

Das sollte funktionieren. – gerry3

22

, wenn Sie Ihre Schieberegler auf verschiedene ganzzahlige Werte schnappen wollen, könnten Sie so etwas in Ihrer valuechanged-Funktion verwenden:

-(IBAction)valueChanged:(UISlider*)sender { 
    int discreteValue = roundl([sender value]); // Rounds float to an integer 
    [sender setValue:(float)discreteValue]; // Sets your slider to this value 
} 

Dadurch wird der Schieber schnappen nach dem Finger auf Werte wie 1,2 Freigabe , ..., 15 basierend auf der Entfernung zwischen zwei Zahlen. Wenn Sie zum Beispiel den Schieberegler bei 2.4 losgelassen haben, springt er auf 2 zurück, während er bei 2.6 auf 3.

+1

Roundtl scheint in iOS nicht zu existieren. Xcode schlägt dann glänzend "roundl" vor, das auch nicht existiert. – Oscar

+0

Danke für das Heads-up. Ich habe meine Antwort entsprechend aktualisiert, um die Funktion roundl() zu verwenden, die ich gerade getestet habe. Das Seltsame ist, meine vorherige Antwort funktionierte zu dieser Zeit ... – thgc

+0

Sieht so aus, als ob dies wieder von Xcode 4.5 funktioniert - ich habe es richtig funktioniert, nur ändern wird es einrasten, wie der Benutzer es immer noch verwendet - der Daumen wird sich nicht bewegen, bis der Benutzer es auf den nächsten Wert zieht. – GeneralMike