2015-11-24 10 views
1

Мне нужен был слайдер с двумя пальцами, но не мог понять, как это сделать после бесконечных усилий! Поэтому я решил использовать два слайдера как назойливый пользовательский интерфейс, и он работает. Однако теперь мне нужно установить его так, чтобы оба ползунка имели расстояние 4 между ними, т.е. когда оба слайдера находятся рядом друг с другом, они не могут приближаться к 4 значениям. поэтому, когда min составляет 10, max может достигать всего лишь 14. Как это сделать? Я попробовал код ниже из другого вопроса SO, но он не работает.Установите два UISliders, чтобы они никогда не опускались друг за другом в быстром

Я пробовал код ниже, но он устанавливает их как в ноль, так и в нечетные и багги, т.е. когда один перемещается он устанавливает другой к нулю или максимум не будет идти на 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 
+0

Взгляните на эту библиотеку https://github.com/muZZkat/NMRangeSlider –

+0

Я. Я использовал это и пришел в трудности, я не мог получить ползунок, чтобы установить на точка на экране, в которой я нуждалась, продолжала уходить с экрана и просто была болью. Вплоть до моей noobyness, а не NMRangeSlider, это определенно то, что я искал, но мне пришлось отказаться от попытки попробовать и попробовать другой метод. Я пробовал все слайдеры github, которые я мог найти, и мне пришлось идти с двумя ползунками, притворяясь, что они делают тот же эффект. Спасибо хоть. – Grace

ответ

0

Я решил так, что если максимальный возраст ползун опускается ниже мин возрастного слайдера будет полностью изменить результаты за кулисами. Он функционирует, однако он определенно не лучший пользовательский интерфейс, поскольку он отображает максимальный и минимальный возраст, например, если для параметра min установлено значение 35 max age установлено значение 28, оно будет отображать его как таковое, но оно будет правильно возвращать результаты по запросу и это главное, что мне нужно. Вот код, который я использовал:

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

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

  • Нет связанных вопросов^_^