1

有没有办法用尤里卡创建范围滑块?

像这样的东西。

<<< RangeSlideRow() {
                        $0.maxValue = 10000
                        $0.minValue = 0
                        $0.selectedMaxValue = 9000
                        $0.selectedMinValue = 5
                    }
4

3 回答 3

1

eureka 中没有范围滑块,因为 UISlider 不支持。您必须根据一些现有的 RangeSlideRow 实现来创建自己的 RangeSlideRow。

检查 Eureka 中的 SliderRow 实现以供参考。

于 2016-07-02T14:28:14.763 回答
1

我知道我参加聚会迟到了,但也许下次这会有用

如果您认为对任何人都有帮助,我鼓励您在Eureka 社区分享您的行:)谢谢!

于 2016-09-08T15:28:43.393 回答
1

这是我的做法

迅捷3版

首次安装的 TTRangeSlider

然后用网点创建 RangeViewCell.xib 文件

然后创建文件 RangeViewCell.swift

互联奥特莱斯

import Foundation
import UIKit
import Eureka
import TTRangeSlider

public class RangeViewCell: Cell<String>, CellType, TTRangeSliderDelegate {

    @IBOutlet weak var rangeSlider: TTRangeSlider!
    @IBOutlet weak var titleLabel: UILabel!
    @IBOutlet weak var fromLabel: UILabel!
    @IBOutlet weak var toLabel: UILabel!

    private var umt = ""
    required public init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
    }

    public override func setup() {
        super.setup()
        rangeSlider.delegate = self
        accessoryType = .None
        editingAccessoryType =  .None
        textLabel?.text = nil
        detailTextLabel?.text = nil

        titleLabel.text = row.title

        rangeSlider.minValue        = rangeViewRow.minValue
        rangeSlider.maxValue        = rangeViewRow.maxValue

        if let selectedMin = rangeViewRow.selectedMinimumValue {
            rangeSlider.selectedMinimum = selectedMin
        }

        if let selectedMax = rangeViewRow.selectedMaximumValue {
            rangeSlider.selectedMaximum = selectedMax
        }

        if let step = rangeViewRow.step {
            rangeSlider.step = step
        }

        umt = ""
        if let umtC = rangeViewRow.unitMeassureText {
            umt = umtC
        }

        rangeSlider.enableStep = true
        updateLabelsValues(rangeSlider.selectedMinimum, max: rangeSlider.selectedMaximum)
        self.selectionStyle = UITableViewCellSelectionStyle.None
    }

    public override func update() {
        super.update()
        accessoryType = .None
        editingAccessoryType =  .None
        textLabel?.text = nil
        detailTextLabel?.text = nil
    }

    public override func didSelect() {

    }

    public func rangeSlider(sender: TTRangeSlider!, didChangeSelectedMinimumValue selectedMinimum: Float, andMaximumValue selectedMaximum: Float) {
        updateLabelsValues(selectedMinimum, max: selectedMaximum)
    }

    private var rangeViewRow: RangeViewRow {
        return row as! RangeViewRow
    }

    func updateLabelsValues(min:Float, max: Float) {

        if min == rangeSlider.minValue && max == rangeSlider.maxValue {
            fromLabel.hidden    = false
            toLabel.hidden      = true
            fromLabel.text = NSLocalizedString("All", comment: "Eureka range slider label if all selected")
        }
        else if min == rangeSlider.minValue && max != rangeSlider.maxValue {
            fromLabel.hidden    = true
            toLabel.hidden      = false

            toLabel.text = NSLocalizedString("to", comment: "Eureka range slider label to") + " " + max.description + " " + umt
        }
        else if min != rangeSlider.minValue && max == rangeSlider.maxValue {
            fromLabel.hidden    = false
            toLabel.hidden      = true

            fromLabel.text = NSLocalizedString("from", comment: "Eureka range slider label from") + " " + min.description + " " + umt
        }
        else {
            fromLabel.hidden    = false
            toLabel.hidden      = false
            fromLabel.text = NSLocalizedString("from", comment: "Eureka range slider label from") + " " + min.description + " " + umt
            toLabel.text = NSLocalizedString("to", comment: "Eureka range slider label to") + " " + max.description + " " + umt
        }

        row.value = "\(min):\(max)"
    }
}

public final class RangeViewRow: Row<String, RangeViewCell>, RowType {
    public var minValue: Float = 0.0
    public var maxValue: Float = 1.0
    public var selectedMinimumValue: Float?
    public var selectedMaximumValue: Float?
    public var unitMeassureText: String?
    public var step: Float?


    required public init(tag: String?) {
        super.init(tag: tag)
        cellProvider = CellProvider<RangeViewCell>(nibName: "RangeViewCell")
    }
}

在这里如何使用它

<<< RangeViewRow("square") {
                $0.title = NSLocalizedString("Square", comment: "Appartment square")
                $0.minValue = 0
                $0.maxValue = 1000
                $0.selectedMinimumValue = 0
                $0.selectedMaximumValue = 1000
                $0.step = 10
                $0.unitMeassureText = "m²"
                }.cellSetup({ (cell, row) -> () in
                    cell.rangeSlider.handleColor = Constants.Color.primaryColor
                    cell.rangeSlider.lineHeight = 3.0
                    cell.rangeSlider.tintColor = Constants.Color.primaryColor
                    cell.fromLabel.textColor = UIColor.darkGrayColor()
                    cell.toLabel.textColor = UIColor.darkGrayColor()
                })
于 2017-01-24T06:03:12.147 回答