UIPickerView didSelectRow 未调用

Posted

技术标签:

【中文标题】UIPickerView didSelectRow 未调用【英文标题】:UIPickerView didSelectRow not called 【发布时间】: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.


【问题讨论】:

【参考方案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)")  

【讨论】:

以上是关于UIPickerView didSelectRow 未调用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 didSelectRow 为多个 UIPickerView 使用数据

UIPickerView didSelectRow 未调用

通过 didSelectRow UIPickerView 传递托管对象数据

UIPickerView didSelectRow 之后的空变量

UIPickerView 作为多个 UITextField 的 inputView

xcode iphone UIPickerView