2009-12-02 7 views
11

UISlider değeri şu anda bir kayan nokta olarak gösterilir. Bir tam sayı olarak nasıl gösterebilirim?UISlider değeri Tamsayı olarak nasıl gösterileceği

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

cevap

2

Sen değişiklikle ilgili kullanıcı geribildirim vermek için güncelleyin sonra kesmek veya kaydırıcı gelen değer yuvarlak ve olabilir (tamsayı değeri kullanıcı bültenleri yapıştırmak görünür). Eğer kaydırıcı farklı tamsayı değerlerine yapıştırmak isterseniz

+0

'u çözerim ki, kendi kendime düzeltmem gerekiyor mu? – RAGOpoR

+0

Bu işe yaramalı. – gerry3

22

, size valueChanged-işlevinde böyle bir şey kullanabilirsiniz:

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

Bu kaydırıcı yapıştırır 1,2 gibi değerlere parmağınızı kaldırmadan sonra , ..., 15 iki sayı arasındaki mesafeye göre. Örneğin, sürgüyü 2,4'te serbest bıraktıysanız, 2'ye geri döner, oysa 2.6'da 3.

+1

roundtl iOS'ta mevcut görünmüyor. Xcode daha sonra parlak bir şekilde "roundl" önermektedir. – Oscar

+0

Başlıklar için teşekkürler. Cevabımı yeni test ettiğim roundl() işlevini kullanmak için güncelledim. Garip olan şu ki, önceki cevabım o zaman işe yaradı ... – thgc

+0

Xcode 4.5'ten itibaren bu yeniden çalışıyor gibi görünüyor - düzgün çalışıyor, sadece kullanıcı değiştirirken değişecek Kullanıcı onu bir sonraki değere geçirene kadar hareket etmeyecek. – GeneralMike