如何使用UIPickerView数据执行计算?

时间:2015-03-17 18:38:58

标签: swift uipickerview

我需要使用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

2 个答案:

答案 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
    }
}