2014-09-01 2 views
1

У меня возникли проблемы с тем, чтобы заставить UISliders взаимодействовать друг с другом и не иметь хорошего способа описать, что мне нужно; но здесь идет.Разделите переменную набора между группой UISliders

Предположим, что вы создаете персонаж ролевой игры и имеете 100 пунктов атрибутов, которые нужно потратить. Вы можете разделить точку на статистику по силе, скорости, интеллекту, защите и удаче. Таким образом, доступными атрибутами являются моя переменная, а статистика - мои слайдеры.

Если я ставлю ползунок силы до 80, то я не должен быть в состоянии скользить любой другой бегунок мимо 20.

В принципе, я ищу способ, чтобы динамически установить максимальное значение UISlider Основы слайдер.значения других ползунков и оставшееся значение исходной переменной.

Это быстрый проект, и в этом я испытываю наибольшую трудность.

ответ

0

Сначала создайте массив слайдеров (вы можете сделать это как коллекцию розетки или настроить его в своем методе viewDidLoad), а затем подключить каждый слайдер к методу sliderChanged ниже.

sliderChanged подсчитывает, сколько совмещенного максимума используется всеми ползунками кроме в настоящее время один движется, а затем ограничивает настоящее движущееся ползунок к тому, что осталось более.

class ViewController: UIViewController { 
    let combinedMaximum: Float = 100 
    @IBOutlet var sliders: [UISlider]! 

    @IBAction func sliderChanged(sender: UISlider) { 
     let totalUsed = sliders.reduce(0) { (subtotal: Float, slider: UISlider) in 
      if slider != sender { 
       return subtotal + slider.value 
      } 
      return subtotal 
     } 
     let remainder = combinedMaximum - totalUsed 
     if sender.value > remainder { 
      sender.value = remainder 
     } 
    } 

    // etc... 
}