Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 尤里卡牧场酒店_Swift_Eureka Forms - Fatal编程技术网

Swift 尤里卡牧场酒店

Swift 尤里卡牧场酒店,swift,eureka-forms,Swift,Eureka Forms,有没有办法用eureka创建范围滑块 像这样的 <<< RangeSlideRow() { $0.maxValue = 10000 $0.minValue = 0 $0.selectedMaxValue = 9000 $0.selectedMinValue = 5

有没有办法用eureka创建范围滑块

像这样的

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

eureka中没有范围滑块,因为UISlider不支持它。您必须基于一些现有的RangeSliderRow实现创建自己的RangeSliderRow


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

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

如果您认为这对任何人都有帮助,我鼓励您在中分享您的观点:)谢谢

我是这样做的

首次安装

然后创建了带有outlets的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")
    }
}
<代码>导入基础 导入UIKit 进口尤里卡 导入TTRangeSlider 公共类RangeViewCell:Cell、CellType、TTRangeSliderDelegate{ @ibvar-rangeSlider:TTRangeSlider! @IBVAR弱var标题标签:UILabel! @IBOutlet弱变量fromLabel:UILabel! @IBL弱无功标签:UILabel! 私有变量umt=“” 必需的公共初始化(样式:UITableViewCellStyle,reuseIdentifier:String?){ init(样式:style,reuseIdentifier:reuseIdentifier) } 公共覆盖函数设置(){ super.setup() rangeSlider.delegate=self accessoryType=.None editingAccessoryType=.None text标签?.text=nil detailTextLabel?.text=nil titleLabel.text=行.title RangeSloider.minValue=rangeViewRow.minValue RangeSloider.maxValue=rangeViewRow.maxValue 如果让selectedMin=rangeViewRow.selectedMinimumValue{ RangeSloider.selectedMinimum=selectedMin } 如果让selectedMax=rangeViewRow.selectedMaximumValue{ RangeSlaider.selectedMaximum=selectedMax } 如果let step=rangeViewRow.step{ RangeSlaider.step=步长 } umt=“” 如果让umtC=rangeViewRow.UnitMeasureText{ umt=umtC } RangeSloider.enableStep=true UpdateLabelsValue(RangeSloider.selectedMinimum,max:RangeSloider.selectedMaximum) self.selectionStyle=UITableViewCellSelectionStyle.None } 公共覆盖函数更新(){ super.update() accessoryType=.None editingAccessoryType=.None text标签?.text=nil detailTextLabel?.text=nil } 公共覆盖函数didSelect(){ } 公共函数范围滑块(发送方:TTRangeSloider!、didChangeSelectedMinimumValue selectedMinimum:Float和MaximumValue selectedMaximum:Float){ UpdateLabelsValue(selectedMinimum,max:selectedMaximum) } 私有变量rangeViewRow:rangeViewRow{ 将行返回为!RangeViewRow } func updateLabelsValue(最小:浮点,最大:浮点){ 如果min==RangeSloider.minValue&&max==RangeSloider.maxValue{ fromLabel.hidden=false toLabel.hidden=true fromlab.text=NSLocalizedString(“全部”,注释:“如果全部选中,则为Eureka范围滑块标签”) } 如果min==RangeSloider.minValue&&max!=RangeSloider.maxValue,则为else{ fromLabel.hidden=true toLabel.hidden=false toLabel.text=NSLocalizedString(“to”,注释:“Eureka范围滑块标签至”)+“”+max.description+“”+umt } 如果最小!=RangeSloider.minValue&&max==RangeSloider.maxValue,则为else{ fromLabel.hidden=false toLabel.hidden=true fromlab.text=NSLocalizedString(“from”,注释:“Eureka范围滑块标签from”)+“”+min.description+“”+umt } 否则{ fromLabel.hidden=false toLabel.hidden=false fromlab.text=NSLocalizedString(“from”,注释:“Eureka范围滑块标签from”)+“”+min.description+“”+umt toLabel.text=NSLocalizedString(“to”,注释:“Eureka范围滑块标签至”)+“”+max.description+“”+umt } row.value=“\(最小值):\(最大值)” } } 公共最终类RangeViewRow:行,行类型{ 公共变量minValue:Float=0.0 公共变量maxValue:Float=1.0 公共变量selectedMinimumValue:浮动? 公共变量selectedMaximumValue:浮动? 公共变量UnitMeasureText:字符串? 公共var步骤:浮动? 必需的公共初始化(标记:字符串?){ super.init(tag:tag) cellProvider=cellProvider(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()
                })

你可以检查一下这个也许有助于你为你工作@korgx9?对不起,还是没有检查。。。我会让你知道我把其他图书馆(RangeSloider)和Eureka混在一起了。如果这是Eureka的正常方式,那么我可以分享它。这是Eureka社区的想法,我们希望所有自定义行都在那里,以避免项目难以理解或维护,并将其行的依赖项分开作为核心。Enrique Galindo检查我的答案,这就是我如何做到的