【问题标题】:Divide a set variable between a group of UISliders在一组 UISlider 之间划分一个集合变量
【发布时间】:2014-09-01 19:05:33
【问题描述】:
我在让 UISlider 相互交互时遇到问题,并且没有一个好的方法来描述我所追求的;但是这里有。
假设您正在创建一个角色扮演角色并且有 100 个属性点可以花费。您可以将积分分为力量、速度、智力、防御和运气的统计数据。所以可用的属性点是我的变量,而统计数据是我的滑块。
如果我将强度滑块设置为 80,那么我应该无法将任何其他滑块滑过 20。
基本上,我正在寻找一种基于其他滑块的slider.value和原始变量的剩余值动态设置UISlider最大值的方法。
这是一个快速的项目,也是我遇到最大困难的地方。
【问题讨论】:
标签:
xcode
dynamic
linker
swift
uislider
【解决方案1】:
首先,创建一个滑块数组(您可以将其作为一个出口集合或在您的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...
}