根据计算的值 [Swift] 使用滑块更改 TextField 中的值

Posted

技术标签:

【中文标题】根据计算的值 [Swift] 使用滑块更改 TextField 中的值【英文标题】:change Value in a TextField with Sliders based on a calculated Value [Swift] 【发布时间】:2018-02-14 22:25:37 【问题描述】:

我正在创建一些简单的输入/输出内容。 我有一个函数可以计算一些东西并在文本字段中返回值。我想根据此计算值使用滑块更改文本字段中的值。假设我的函数返回值 4,76,滑块的最大值应该是 value*2 (= 9,52),最小值是 0。我的问题是我真的不知道应该如何创建滑块这会更改一个值,其中该值不是硬编码的。

@IBAction func slider(_ sender: UISlider) 
    sender.value = Float(calculateWaterAmount())!
    sender.minimumValue = 0
    sender.maximumValue = sender.value*2

    waterAmountTextField.text = String(sender.value)

函数calculateWaterAmount() 返回一个双精度值。滑块应该能够更改此函数的值并将其返回到文本字段中。

编辑: 所以基本上它应该看起来像这样slider with value。 将在文本字段中显示的值取决于函数 calculateWaterAmount() 中的公式,并且每次我使用不同的值调用该函数时,它显然应该返回不同的值,如果需要,滑块应该可以将显示的值更改为,比方说,一个介于 0 和 n*2 之间的值,其中 n = 计算值

【问题讨论】:

adjusting label to slider value swift的可能重复 sender.value = xx 不会再次导致值更改事件吗?你最好改用open func setValue(_ value: Float, animated: Bool) // move slider at fixed velocity (i.e. duration depends on distance). does not send action @Ryan 不,设置值不会调用任何更改事件。 @Ryan 嘿,谢谢您的回答,但这似乎不是我想要的。我已经更新了我的问题,所以最好理解 【参考方案1】:

你需要打电话

slider.maximumValue = Float(calculateWaterAmount()) * 2.0

每次水量变化。有了这个,你将始终让 maximumValue 等于 func 的两倍值

【讨论】:

以上是关于根据计算的值 [Swift] 使用滑块更改 TextField 中的值的主要内容,如果未能解决你的问题,请参考以下文章

根据滑块的值更改 UI 中的图像

根据选项选择更改引导滑块中的值

在 iOS 中使用圆形滑块更改时钟的值

如何限制滑块的值更改事件?

根据留空的文本字段选择计算

Swift:如何在动态 UITableView 的自定义单元格中获取滑块的值?