我需要使用UIPickerView(Swift)中的选择执行一些计算。有没有办法使用扩展名,如.floatValue来获取所选行的字符串,并将其转换为浮点数?我尝试了几种不同的方法,但都失败了。
我的选择器功能正常,所有代理和数据源都已分配。
这就是我所拥有的:
var spherePower : Float!
let overRefractionData = ["-1.00", "-0.75", "-0.50", "-0.25", "0", "0.25", "0.50", "0.75", "1.00"]
spherePower = // I need to pass the selected row's float value here
答案 0 :(得分:2)
您的选择器的数据源可能应该首先将值存储为浮点数,然后委托将这些浮点数转换为字符串以显示在选择器中。
var overRefractionData = [-1.0, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75, 1.0]
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return "\(overRefractionData[row])"
}
因此,当用户选择一个值时,您可以使用拾取的索引从数据数组中获取值:
func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int) {
var pickedValue = overRefractionData[row]
// do something with the picked value...
}
答案 1 :(得分:1)
在pickerView(_ pickerView: didSelectRow row: Int, inComponent component: Int)
中,您可以使用行值作为overRefractionData
的索引。然后将字符串转换为NSString并使用NSString的floatValue。
func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int) {
if (row < overRefractionData.count) {
var selectedString = overRefractionData[row]
var selectedFloatValue = (selectedString as NSString).floatValue
// selectedFloatValue should now hold a float value
}
}