2016-07-01 82 views
0

有没有什么方法可以用尤里卡创建范围滑块?尤里卡rangeSliderRow

就是这样。

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

您可以检查这也许可以帮助你http://stackoverflow.com/questions/37767816/how-to-create-custom-inline-rows-with-尤里卡/ 37998235#37998235 –

+0

适合你@ korgx9? –

+0

对不起仍然没有检查...我会让你知道 – korgx9

回答

1

因为UISlider不支持它,所以在尤里卡没有范围滑块。您将不得不基于一些现有的Rangelider实现创建您自己的RangeSlideRow。

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

1

我知道我来晚了党,但也许下一次this will be useful

我鼓励你在Eureka Community分享你的行,如果你认为会对任何人有帮助:)谢谢!

+0

我混合了其他图书馆(RangeSlider)与尤里卡。如果这是尤里卡的正常方式,那么我可以分享它。 – korgx9

+0

这就是尤里卡社区的想法,我们希望在那里有所有的自定义行,以避免让项目难以理解或维护,并保持核心的行相关性。 –

+0

恩里克加林多检查我的答案,这是我如何做山雀 – korgx9

0

这里是我是如何做到的

swift 3 version

首次安装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() 
       })