1

我正在尝试显示整数值而不是浮点数。我尝试了以下方法:

    section.append(SliderRow() {
        $0.title = "Number of items"
        $0.tag = "numberOfItems"
        $0.minimumValue = 1
        $0.maximumValue = 10
        $0.steps = 10
        $0.value = 5
        $0.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 访问所有其他属性。例如,我更改更改文本颜色,但不更改文本。我猜我正在设置文本,但它很快就会被覆盖。

有没有办法让滑块显示整数值?

谢谢。

4

2 回答 2

6

自 2016 年 12 月 2 日以来,有一种更简单的方法.....

$0.displayValueFor = {
   return "\(Int($0 ?? 0))"
}

(归功于https://github.com/xmartlabs/Eureka/issues/817展示了如何做到这一点 - 以及相关的修复)

这非常适合在 Eureka SliderRow 和 StepperRow 中显示 Int 请参阅 xcode Simulator 的这张图片,在 StepperRow 和 SliderRow 上显示 Int 值

于 2017-05-14T16:16:08.397 回答
0

为了解决这个问题,我克隆了 Eureka 存储库。事实证明我关于覆盖这些值是对的。为了测试它,我在 onChange 处理程序中将文本设置为一个常量值,然后在 valueChanged 函数的 SliderRow 源代码中添加打印语句:

    if shouldShowTitle() {

        print("current value: \(valueLabel.text)" )

        valueLabel.text = "\(row.value!)"

        print("updated value: \(valueLabel.text)" )
    }

输出如下所示:

当前值:可选(“xyz”)

更新值:可选(“3.0”)

当前值:可选(“xyz”)

更新值:可选(“5.0”)

所以我为自己创建了一个使用整数的 SliderRowInt 类:

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 有一个类似的问题,我以同样的方式解决了这个问题。

我将这两个类都签入到我的克隆存储库中,以防有人遇到同样的问题,他们可以在这里找到:https ://github.com/volkanx/Eureka/

于 2016-05-28T07:06:21.260 回答