如何在 Swift 中更新选取器的显示行而不移动选取器?



我设置了一个选择器,根据用户想要使用的单元,从两个不同的数组中进行绘制。一切都很好,但在切换开关后,用户必须将选择器移动几个值,然后才能更新显示以显示新单位。我是不是搞错了?我应该有两个单独的拾取器和一个布尔值来打开和关闭字母吗?

我希望有一种简单的方法可以强制选择器向前或向后跳5行,这样可以将整个显示更新为新的单位,但我找不到这样做的方法。任何指示都将不胜感激。

 func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
    let flatKComp = 0
     var formattedFlatK : String!
     var formattedSteepK : String!
    if dioptorsOn == true 
    { // linked to a UISwitch
       formattedFlatK = String(format: "%.2f", flatKArrayD[row])
       formattedSteepK = String(format: "%.2f", steepKArrayD[row])
        if component == flatKComp 
        {
            return formattedFlatK
        } 
        else 
        {
            return formattedSteepK
        }
    } 
    else 
    {
        formattedFlatK = String(format: "%.2f", flatKArrayMM[row])
        formattedSteepK = String(format: "%.2f", steepKArrayMM[row])
        if component == flatKComp 
        {
            return formattedFlatK
        } 
        else 
        {
            return formattedSteepK
        }
    }
}

您是否尝试过使用刷新pickerView

pickerView.reloadAllComponents()

最新更新