Is there any way to create range slider with eureka?
Something like this.
<<< RangeSlideRow() {
$0.maxValue = 10000
$0.minValue = 0
$0.selectedMaxValue = 9000
$0.selectedMinValue = 5
}
There is no range slider in eureka because the UISlider does not support it. You will have to create your own RangeSlideRow based on some existing rangeslider implementations.
Check the SliderRow implementation in Eureka for reference.
I know I came late to the party but maybe next time this will be useful .
I encourage you to share your row in the Eureka Community if you think is going to be helpful to anyone :) Thanks!
Here is how I did it
First Installed TTRangeSlider
Then created RangeViewCell.xib file with outlets
Then created file RangeViewCell.swift
Connected Outlets
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")
}
}
And here how to use it
<<< 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()
})
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.