Picker Views和if语句

时间:2016-08-25 18:00:48

标签: ios swift swift2 uipickerview

我使用本教程创建了一个成功的pickerview:

Link to tutorial

我希望能够在选择每个选项时做一些不同的事情,而大多数教程只展示如何为所有选项做一件事,例如将选项文本放入标签中。

这是我试图做我想要的代码。 (我放入打印部分以查看代码是否正在运行且它不是。)

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if row == 0 {
            currentSpeedMeasurement = "MPH"
            speed = speed * 2.23694
            print("Testing")
        }else if row == 1 {
            currentSpeedMeasurement = "KPH"
            speed = speed * 3.6
        } else if row == 2 {
            currentSpeedMeasurement = "M/S"
            speed = locationManager.location!.speed
            //speed = round(100 * speed)
        }
    }

编辑:下面是我项目的所有代码。我正在创建一个应用程序,显示此人的行进速度。 我希望用户从PickerView(名为measurementPicker)中选择一个速度测量,例如MPH。

我想根据用户使用switch语句选择的选项来激活开关。

我希望然后将速度显示在标签中(已转换为所需的测量值),然后进行测量。例如。 "你的速度:10英里/小时"

开关似乎没有运行,因为测量始终为m / s。

请帮忙!

由于

1 个答案:

答案 0 :(得分:1)

代码看起来不错,我认为使用switch

会更好
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

    switch row {
    case 0:
        currentSpeedMeasurement = "MPH"
        speed = speed * 2.23694
        print("Testing")
    case 1:
        currentSpeedMeasurement = "KPH"
        speed = speed * 3.6
    default:
        currentSpeedMeasurement = "M/S"
        speed = locationManager.location!.speed
        //speed = round(100 * speed)
    }
}

为什么它不起作用?我认为你缺少为选择器设置委托,通过故事板进行设置

Setting delegate via storyboard

或通过代码:

@IBOutlet weak var pickerView: UIPickerView! {
        didSet{
            pickerView.delegate = self
            pickerView.dataSource = self
        }
    }

以后它应该和你一起工作。