选择器视图 Swift

Picker View Swift

我有一个选择器视图需要在按下 UIButton 时显示。 UIButton 的文本将更改为所选行的文本。但是如何启动按钮的选择器视图?

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

override func viewDidLoad() {
    super.viewDidLoad()

    picker.delegate = self
    picker.dataSource = self

   }

   func pickerView(_ pickerView: UIPickerView,      numberOfRowsInComponent component: Int) -> Int {
    return CountryData.count
   }

   func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int,   inComponent component: Int) {
    CountryButton.setTitle(CountryData[row], for: .normal)
}

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

@IBAction func Country(_ sender: AnyObject) {

    CountryButton.inputView == picker

}

这行不通

注意:设置操作方法时,请务必将发送方设置为调用操作的控件类型、UIButton 或 UIPickerView 或其他。不要将其保留为 AnyObject。

我不太清楚你要做什么。你说当你按下按钮时选择器视图需要改变,然后你说按钮的文本需要改变到选择器视图中的 selected 行。

当您在选取器视图中 select 某些内容时,您是否试图让按钮的文本发生变化?或者您是否在尝试在按下按钮时实例化一个新的选择器视图?

如果您在 select 选择器视图中的一行时尝试更改按钮的文本,那么您想要为选择器视图添加一个 onChanged() 操作方法并更改按钮的该方法中的文本。

@IBAction func pickerChanged(_ sender: UIPickerView) {
    button.setTitle("New text", for: UIControlState)
}

按下按钮时显示新选择器视图的一种简单方法是将选择器视图放入堆栈视图中并设置其隐藏 属性。然后按钮的 onPress() 方法可以在堆栈视图中取消隐藏选择器视图。

@IBAction func onPress(_ sender: UIButton) {
    if weWannaShowthePicker {
        pickerStack.arrangedSubviews[pickerPosition].isHidden = false
    } else { // hide it
        pickerStack.arrangedSubviews[pickerPosition].isHidden = true
    }
}