根据计算的值 [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 中的值的主要内容,如果未能解决你的问题,请参考以下文章