2009-12-02 12 views
11

के रूप में कैसे दिखाया जाए UISlider का मूल्य वर्तमान में एक फ्लोट के रूप में दिखाया गया है। मैं इसे एक पूर्णांक के रूप में कैसे दिखा सकता हूं?यूआईस्लाइडर के मूल्य को इंटीजर

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

उत्तर

2

आप काट-छांट या स्लाइडर से मूल्य दौर सकते हैं और फिर इसे अद्यतन परिवर्तन के बारे में उपयोगकर्ता प्रतिक्रिया देने के लिए (यह पूर्णांक मान जब उपयोगकर्ता विज्ञप्ति में स्नैप करने के लिए प्रकट होता है)।

+0

पर हल हो जाएगा, क्या मुझे लगता है कि मुझे इसे अपने स्वयं के अधिकार से अपडेट करना होगा? – RAGOpoR

+0

यह काम करना चाहिए। – gerry3

22

अगर आप अपने स्लाइडर अलग पूर्णांक मूल्यों स्नैप करना चाहते हैं, तो आप अपने valueChanged-समारोह में कुछ इस तरह इस्तेमाल कर सकते हैं:

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

इस स्लाइडर स्नैप हो जाएगा 1,2 तरह मूल्यों के लिए अपनी अंगुली को उठाने के बाद , ..., 15 दो संख्याओं के बीच की दूरी के आधार पर। उदाहरण के लिए यदि आपने 2.4 पर स्लाइडर जारी किया है, तो यह 2 पर वापस आ जाएगा, जबकि 2.6 पर यह 3.

+1

आईओएस में roundtl मौजूद नहीं है। एक्सकोड फिर शानदार ढंग से "राउंडल" सुझाता है, जो कि अस्तित्व में नहीं है। – Oscar

+0

हेड-अप के लिए धन्यवाद। मैंने फ़ंक्शन राउंड() का उपयोग करने के लिए मेरा जवाब अपडेट किया है, जिसे मैंने अभी परीक्षण किया है। अजीब बात यह है कि, मेरा पिछला उत्तर उस समय काम करता था ... – thgc

+0

ऐसा लगता है कि यह एक्सकोड 4.5 के रूप में फिर से काम करता है - मुझे यह ठीक से काम कर रहा है, केवल बदलाव ही है क्योंकि उपयोगकर्ता अभी भी इसका उपयोग कर रहा है - अंगूठे तब तक नहीं चलेगा जब तक उपयोगकर्ता इसे अगले मूल्य पर नहीं खींचता। – GeneralMike

संबंधित मुद्दे