2015-05-29 4 views
4

Я создаю UISlider Программируем. Я пытаюсь настроить UISlider значение, как 4,1, 4,2, 4,3, 4,4, 4,5, 5,0, 5,1, 5,2, 5,3, 5,4, 5,5, 6,0, ... Кто-нибудь дать мне решениеКак настроить UISlider Value в Swift

sliderDemo = UISlider(frame:CGRectMake(0, 0, 200,20)) 
    var numberOfSteps : NSInteger = numbers.count - 1 
    sliderDemo.minimumValue = 6.5 
    sliderDemo.maximumValue = 4.1 
    sliderDemo.continuous = true 
    sliderDemo.value = 4.0 
    sliderDemo.addTarget(self, action: "sliderValueDidChange:", forControlEvents: .ValueChanged) 
    self.view.addSubview(sliderDemo) 

func sliderValueDidChange(sender:UISlider!) 
{ 
    println("number:\(sender.value)") 
} 
+0

@NimitParekh, почему он должен иметь пользовательский контроллер? –

+0

@ Бала вы можете рассказать нам о проблеме, с которой вы столкнулись? –

+0

Вы хотите, чтобы ваш слайдер не имел 4.6, 4.7, 4.8, 4.9, 5.6, 5.7, 5.8, 5.9? –

ответ

5

Я просто создать пример пользовательского слайдера для вас, в этом случае я создаю и добавляю его в форму, но вы можете легко адаптироваться к использованию одного из раскадровки, все, что вам нужно сделать, это добавить ваши значения в массив чисел, результат будет находиться в переменной number в функции valueChanged, вы можете использовать наблюдателя, уведомления или протокол для извлечения значения по мере его изменения или просто вызвать функцию оттуда.

class ViewController: UIViewController { 

    var slider:UISlider? 
    // These number values represent each slider position 
    var numbers = [1, 2, 3, 4, 5, 6, 7] //Add your values here 
    var oldIndex = 0 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     slider = UISlider(frame: self.view.bounds) 
     self.view.addSubview(slider!) 

     // slider values go from 0 to the number of values in your numbers array 
     var numberOfSteps = Float(numbers.count - 1) 
     slider!.maximumValue = numberOfSteps; 
     slider!.minimumValue = 0; 

     // As the slider moves it will continously call the -valueChanged: 
     slider!.continuous = true; // false makes it call only once you let go 
     slider!.addTarget(self, action: "valueChanged:", forControlEvents: .ValueChanged) 
    } 
    func valueChanged(sender: UISlider) { 
     // round the slider position to the nearest index of the numbers array 
     var index = (Int)(slider!.value + 0.5); 
     slider?.setValue(Float(index), animated: false) 
     var number = numbers[index]; // <-- This numeric value you want 
     if oldIndex != index{ 
      println("sliderIndex:\(index)") 
      println("number: \(number)") 
      oldIndex = index 
     } 
    } 
} 

Я надеюсь, что это поможет!

+1

Спасибо за ответ ... я использую код ur, очень полезный для меня ... я заменяю значение массива чисел на «var numbers = [4.9, 4.10, 4.12, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 5.12, 5.11, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 6.9, 6.12, 6.11] 'его частично дают выход ... Проблема заключается в том, что индекс берется из 5, поэтому первое значение, которое я получаю, это 5.2 ... Coul'd u help me – Bala

+0

Извините, я смущаюсь, я просто запускаю массив, который вы разместили, и он идет один за другим без проблем, возможно, я не понимаю, что вы хотите архив. – Icaro

+0

его хорошо @IcaroNZ ... ваше решение на 80% полезно для меня ... Спасибо u ... – Bala

Смежные вопросы