我在每个单元格中都有UITableView
UISlider
(请注意下面的示例中可能有两个以上!)。
我的目标是让它在拖动其中一个滑块时进行调整,以便所有滑块的总值始终为100%。
现在我正在使用委托来处理每个滑块的值,这样当在滑块上设置新值时,它会调用委托函数来相应地调整其他滑块。
这就是细胞类的样子:
class SliderCell: UITableViewCell {
@IBOutlet weak var slider: UISlider!
...
var id: String?
var delegate: SliderDelegate?
var value: Double! {
didSet {
slider.value = value
}
}
...
private func sliderValueChanged(to newValue: Double) {
// Values are between 0 and 1..
self.value = delegate?.valueChanged(requestedValue: newValue, cellId: id)
}
}
这是代表:
class SliderDelegate {
var allCells: [SliderCell]?
...
func valueChanged(requestedValue: Double, cellId: String) -> Double {
let minValue = Double() // ?
let maxValue = Double() // ?
...
let eachOtherCellOffset = Double() // ?
for cell in allCells.filter { return $0.id != cellId } {
cell.value += eachOtherCellOffset
}
return min(max(minValue, requestedValue), min(maxValue, requestedValue))
}
}
关于如何计算细胞的最小值和最大值的任何建议?我如何能够抵消其他单元格的值以解释新值?