2015-05-29 77 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,...任何人给我的解决方案如何在Swift中自定义UISlider值

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

@Bala您能否介绍一下您面临的问题? –

+0

你想让你的滑块没有4.6,4.7,4.8,4.9,5.6,5.7,5.8,5.9? –

回答

5

我只是创建一个自定义滑块的示例,在这种情况下,我正在创建自己并将其添加到表单中,但您可以轻松地使用故事板中的滑块来进行调整,您只需将值添加到数字数组中,结果将位于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

感谢您的回复...我使用的代码对我来说非常有帮助...我用'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.1,5.1,6.2,6.3,6.4,6.5,6.6,6.7,6.8,6.9,6.62,6.11],其部分给出输出...问题是指数取自5,所以我得到的第一个值是5.2 ... Coul'd你可以帮我 – Bala

+0

对不起,我很困惑,我只是运行你发布的数组,并且它一个接一个没有问题,也许我不是很清楚你想要什么存档。 – Icaro

+0

它好吗@IcaroNZ ...您的解决方案对我来说是80%有用...谢谢您... – Bala