2016-07-01 81 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() 
       })