UIPickerView select 第一行,隐藏时

UIPickerView select first row, when hiding

我为 UIPickerView 制作了一个工具栏:

override func viewDidLoad() {
    pickerToolbar.barStyle = UIBarStyle.Default
    pickerToolbar.translucent = true
    pickerToolbar.tintColor = UIColor(red: 0.0, green: 112/255, blue: 186/255, alpha: 1.0)
    pickerToolbar.sizeToFit()

    let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "hidePicker()")
    let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
    let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "hidePicker()")

    pickerToolbar.setItems([cancelButton, spaceButton, doneButton], animated: false)
    pickerToolbar.userInteractionEnabled = true

    typePicker.addSubview(pickerToolbar)
}

func hidePicker() {
    typePicker.hidden = true
}

但是当我点击 "Done" 或 "Cancel" 按钮时,选择器 select 第一行并关闭。我不想要这样的行为,我只想隐藏选择器并留下 selected 值。

所以,我有 2 个问题:

  1. 为什么 UIPickerView 会这样?
  2. 如何预防?

感谢您的帮助!


我发现你有两个错误。一个是动作的错字。根据您的代码,它必须是 action: "hidePicker",没有括号。 第二个是你的 pickerToolbar 不应该是 pickerView 的子视图。将其更改为 self.view.addSubview(pickerToolbar),您将看到更改。

干杯,