均衡滑块

时间:2017-10-30 19:29:41

标签: swift uitableview uislider

我在每个单元格中都有UITableView UISlider(请注意下面的示例中可能有两个以上!)。

Example 1

我的目标是让它在拖动其中一个滑块时进行调整,以便所有滑块的总值始终为100%。

Example 2

现在我正在使用委托来处理每个滑块的值,这样当在滑块上设置新值时,它会调用委托函数来相应地调整其他滑块。

这就是细胞类的样子:

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))
    }

}

关于如何计算细胞的最小值和最大值的任何建议?我如何能够抵消其他单元格的值以解释新值?

0 个答案:

没有答案