在 SliderRow 上显示整数值
Displaying integer values on SliderRow
我正在尝试显示整数值而不是浮点数。我尝试了以下方法:
section.append(SliderRow() {
[=10=].title = "Number of items"
[=10=].tag = "numberOfItems"
[=10=].minimumValue = 1
[=10=].maximumValue = 10
[=10=].steps = 10
[=10=].value = 5
[=10=].onChange { row in
let isInteger = floor(row.value!) == row.value!
if (!isInteger) {
row.value = floor(row.value!)
}
let formattedString = String(format: "%.0f", row.value!)
row.cell.valueLabel.text = formattedString
}
})
formattedString 显示了我想要的值,但我无法在屏幕上显示它们。我可以通过 row.cell 访问所有其他属性。例如,我更改了文本颜色,但没有更改文本。我猜我正在设置文本,但它很快就会被覆盖。
有没有办法让滑块显示整数值?
谢谢。
为了解决这个问题,我克隆了 Eureka 存储库。事实证明我覆盖这些值是正确的。为了测试它,我在 onChange 处理程序中将文本设置为一个常量值,然后在 valueChanged 函数的 SliderRow 源代码中添加了打印语句:
if shouldShowTitle() {
print("current value: \(valueLabel.text)" )
valueLabel.text = "\(row.value!)"
print("updated value: \(valueLabel.text)" )
}
输出如下所示:
current value: Optional("xyz")
updated value: Optional("3.0")
current value: Optional("xyz")
updated value: Optional("5.0")
所以我自己创建了一个使用整数的 SliderRowInt class:
public final class SliderRowInt: Row<Int, SliderCellInt>, RowType {
public var minimumValue: Int = 0
public var maximumValue: Int = 10
public var steps: UInt = 20
required public init(tag: String?) {
super.init(tag: tag)
} }
现在我使用的是整数版本。也许不是最优雅的解决方案,但对我来说效果很好。
StepperRow 也有类似的问题,我用同样的方法解决了。
我将两个 classes 都签入了我的克隆存储库,以防有人遇到相同的问题,他们可以在这里找到:https://github.com/volkanx/Eureka/
自 2016 年 12 月 2 日起,有一种更简单的方法......
[=10=].displayValueFor = {
return "\(Int([=10=] ?? 0))"
}
(归功于 https://github.com/xmartlabs/Eureka/issues/817,展示了如何操作 - 以及相关的修复)
这非常适合在 Eureka SliderRow 和 StepperRow 中显示 Int
See this picture of xcode Simulator showing Int values on StepperRow and SliderRow
我正在尝试显示整数值而不是浮点数。我尝试了以下方法:
section.append(SliderRow() {
[=10=].title = "Number of items"
[=10=].tag = "numberOfItems"
[=10=].minimumValue = 1
[=10=].maximumValue = 10
[=10=].steps = 10
[=10=].value = 5
[=10=].onChange { row in
let isInteger = floor(row.value!) == row.value!
if (!isInteger) {
row.value = floor(row.value!)
}
let formattedString = String(format: "%.0f", row.value!)
row.cell.valueLabel.text = formattedString
}
})
formattedString 显示了我想要的值,但我无法在屏幕上显示它们。我可以通过 row.cell 访问所有其他属性。例如,我更改了文本颜色,但没有更改文本。我猜我正在设置文本,但它很快就会被覆盖。
有没有办法让滑块显示整数值?
谢谢。
为了解决这个问题,我克隆了 Eureka 存储库。事实证明我覆盖这些值是正确的。为了测试它,我在 onChange 处理程序中将文本设置为一个常量值,然后在 valueChanged 函数的 SliderRow 源代码中添加了打印语句:
if shouldShowTitle() {
print("current value: \(valueLabel.text)" )
valueLabel.text = "\(row.value!)"
print("updated value: \(valueLabel.text)" )
}
输出如下所示:
current value: Optional("xyz")
updated value: Optional("3.0")
current value: Optional("xyz")
updated value: Optional("5.0")
所以我自己创建了一个使用整数的 SliderRowInt class:
public final class SliderRowInt: Row<Int, SliderCellInt>, RowType {
public var minimumValue: Int = 0
public var maximumValue: Int = 10
public var steps: UInt = 20
required public init(tag: String?) {
super.init(tag: tag)
} }
现在我使用的是整数版本。也许不是最优雅的解决方案,但对我来说效果很好。
StepperRow 也有类似的问题,我用同样的方法解决了。
我将两个 classes 都签入了我的克隆存储库,以防有人遇到相同的问题,他们可以在这里找到:https://github.com/volkanx/Eureka/
自 2016 年 12 月 2 日起,有一种更简单的方法......
[=10=].displayValueFor = {
return "\(Int([=10=] ?? 0))"
}
(归功于 https://github.com/xmartlabs/Eureka/issues/817,展示了如何操作 - 以及相关的修复)
这非常适合在 Eureka SliderRow 和 StepperRow 中显示 Int See this picture of xcode Simulator showing Int values on StepperRow and SliderRow