设置两个UISliders永远不会在swift中低于对方

时间:2015-11-24 12:52:37

标签: ios slider swift2 uislider swift2.1

我想要一个两个拇指滑块,但经过无尽的努力无法弄清楚如何做到这一点!所以我已经决定使用两个滑块作为厚脸皮的UI,它的工作原理。但是现在我需要设置它以使两个滑块之间的距离为4。当两个滑块彼此相邻时,它们不能接近4个值。所以当min为10时,max只能低至14。 我该怎么做呢?我从一个不同的SO问题尝试了下面的代码,但它没有用。

我尝试了下面的代码,但它将它们都设置为零,它们是奇怪的和错误的,即。当一个被移动时,它将另一个设置为零或最大值不会变为55但是24。

    var slider1:Float = 0.0
    var slider2:Float = 0.0

func configureDefaultMaxAgeSlider() {
    maxAgeSlider.minimumValue = 10
    maxAgeSlider.maximumValue = (55 - slider1)
   // maxAgeSlider.value = 0
    maxAgeSlider.continuous = true
}
func configureDefaultAgeSlider() {
    ageSlider.minimumValue = 10
    ageSlider.maximumValue = (55 - slider2)
    // ageSlider.value = 0
    ageSlider.continuous = true
}

@IBOutlet weak var maxAgeLabel: UILabel!

@IBOutlet weak var ageSlider: UISlider!
@IBOutlet weak var maxAgeSlider: UISlider!

@IBAction func ageSliderValueChanged(sender: UISlider) {

    let minAgeValue = Int(sender.value)

    ageLabel.text = "\(minAgeValue)"

    minAgeSearch = "\(minAgeValue)"

    slider1 = (sender.value)
    configureDefaultMaxAgeSlider()

}

@IBAction func maxAgeSliderValueChanged(sender: UISlider) {

    let maxAgeValue = Int(sender.value)

    maxAgeLabel.text = "\(maxAgeValue)"

    maxAgeSearch = "\(maxAgeValue)"

    slider1 = (sender.value)

    configureDefaultAgeSlider()

}

我在objc中找到它,但我不知道如何转换它。 SO objc answer

修改

我几乎有它工作的概念有任何人知道我做错了什么???

@IBAction func ageSliderValueChanged(sender: UISlider) {

    let minAgeValue = Int(sender.value)

    ageLabel.text = "\(minAgeValue)"

    minAgeSearch = "\(minAgeValue)"

    if ageSlider.value > maxAgeSlider.value {
    maxAgeSlider.value = ageSlider.value

    }


    minAgeUserDefaults.setObject(minAgeSearch, forKey: "name")
}

@IBAction func maxAgeSliderValueChanged(sender: UISlider) {
    let maxAgeValue = Int(sender.value)

    maxAgeLabel.text = "\(maxAgeValue)"

    maxAgeSearch = "\(maxAgeValue)"


    if maxAgeSlider.value < ageSlider.value {
        maxAgeSlider.value = ageSlider.value

    }

    maxAgeUserDefaults.setObject(maxAgeSearch, forKey: "age")
}


    ageSlider.continuous = true
   maxAgeSlider.continuous = true

1 个答案:

答案 0 :(得分:0)

我解决了它,以便如果最大年龄滑块低于最小年龄滑块,它将反转幕后的结果。它起作用,但它绝对不是最好的UI,因为它显示最大和最小年龄,例如如果min设置为35 max age设置为28它会显示它,但它会在请求时正确返回结果这是我需要的主要内容。这是我使用的代码:

if maxAge < minAge {
        maxAge = minAgeSearch
        minAge = maxAgeSearch
    }