Swift 发送到自定义实例的无法识别的选择器 class

Swift unrecognized selector sent to instance in custom class

我不断收到“'-[UITableView numberOfComponentsInPickerView:]: unrecognized selector sent to instance”错误,引用了我的自定义 UITableViewCell 类 中的一个方法,我似乎无法弄清楚原因.我搜索了堆栈溢出,但找不到与我的情况相关的答案。有任何想法吗?谢谢!

public class PickerTableViewCell:UITableViewCell, UIPickerViewDataSource, UIPickerViewDelegate {

var pickerData:[Array<Int>] = []

@IBOutlet weak var picker: UIPickerView!

public func configure(data:[Array<Int>]) {
    pickerData = data
}

// Picker functions
public func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
    return pickerData.count
}
public func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return pickerData[component].count
}
public func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
    return String(pickerData[component][row])
}

}

如果您查看错误消息,您会发现在 UITableView 实例上调用了方法 numberOfComponentsInPickerView:

所以你问这个问题"why would that method be invoked on a UITableView?"

有问题的方法是一个选择器视图数据源方法,所以这意味着你在某个地方指定了一个 UITableView 作为选择器视图的数据源,这样当显示选择器视图时,方法调用是针对 class (UITableView) 尚未实现委托方法。

在您的情况下,这是 Interface Builder 中的简单拖放错误。