簡體   English   中英

尤里卡山脈滑行

[英]Eureka rangeSliderRow

有什么辦法用尤里卡創建范圍滑塊嗎?

這樣的事情。

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

eureka中沒有范圍滑塊,因為UISlider不支持它。 您將必須基於一些現有的rangeslider實現創建自己的RangeSlideRow。

檢查Eureka中的SliderRow實現,以供參考。

我知道我來晚了,但是下次會有用

如果您認為對任何人都有幫助,我鼓勵您在Eureka社區中分享您的觀點 :)謝謝!

這是我做的

迅捷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()
                })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM