【问题标题】:UIPickerView didSelectRow not calledUIPickerView didSelectRow 未调用
【发布时间】:2014-06-26 16:57:50
【问题描述】:

(Swift、Xcode6、iOS8、iPhone)

在我的UIPickerView 控件中,didSelectRow 没有被调用。

  • 是的,我已将 Splash 设置为选取器的委托(和数据源)。
  • Splash 扩展了 UIViewController 类
  • 所有其他功能都可以工作。没有错误,选择器旋转,有五行,并显示其他函数中定义的行号。

didSelectRow 方法何时被调用?我是否需要实现某种Done 按钮,或者当用户停止旋转时会触发此方法?我需要实施单独的通知吗? tyvm :)

class Splash: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {

@IBOutlet var countryPicker : UIPickerView = nil

func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int {
    return 1
}
func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int {
    return 5
}
func pickerView(pickerView: UIPickerView!, titleForRow row: Int, forComponent component: Int) -> String {
    return "\(row)"

}
func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, forComponent component: Int) -> Int {
    println("Row: \(row)")
    return row
}
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

【问题讨论】:

    标签: ios xcode delegates swift uipickerview


    【解决方案1】:

    您的签名错误,pickerView:didSelectRow:forComponent: 返回 void,而不是整数。试试:

    func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, forComponent component: Int) {
        println("Row: \(row)")
    }
    

    【讨论】:

      【解决方案2】:

      斯威夫特 4.2

      func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
      print("selected row = \(row)") } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-01
        相关资源
        最近更新 更多