Swift 尤里卡牧场酒店
有没有办法用eureka创建范围滑块 像这样的Swift 尤里卡牧场酒店,swift,eureka-forms,Swift,Eureka Forms,有没有办法用eureka创建范围滑块 像这样的 <<< RangeSlideRow() { $0.maxValue = 10000 $0.minValue = 0 $0.selectedMaxValue = 9000 $0.selectedMinValue = 5
<<< 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检查我的答案,这就是我如何做到的