代码之家  ›  专栏  ›  技术社区  ›  Phil Edge

更新标签时的Pickerview延迟

  •  1
  • Phil Edge  · 技术社区  · 7 年前

    我正在使用选择器视图,并希望更新屏幕上与当前所选项目相关的内容。

    以下是程序代码:

       func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        TeamLabel.text = teams [row]
        attackField.text = "\(attacks [row])"
        defenseField.text = "\(defenses [row])"
        currentRow = row
        return teams [row]
    }
    

    这会在屏幕上显示球队名称、进攻和防守值。

    然而,当滚动选择器时,我得到了很多错误的结果。文本输出与选择器中当前的内容不匹配。知道我该怎么解决这个问题吗?

    谢谢

    1 回复  |  直到 7 年前
        1
  •  0
  •   rmaddy    7 年前

    您使用了错误的委托方法来更新文本字段(或标签)。

    使现代化 titleForRow 只是:

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return teams[row]
    }
    

    然后实施 didSelectRow

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        TeamLabel.text = teams[row]
        attackField.text = "\(attacks[row])"
        defenseField.text = "\(defenses[row])"
    }