我一直得到一个“' - [UITableView numberOfComponentsInPickerView:]:无法识别的选择器发送到实例”错误引用我的一个自定义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])
}
}
答案 0 :(得分:1)
如果查看错误消息,您会看到在numberOfComponentsInPickerView:
实例上调用了方法UITableView
。
所以你问的问题是“为什么要在UITableView
上调用该方法?”
有问题的方法是一个选择器视图数据源方法,这意味着你在某个地方指定了一个UITableView作为选择器视图的数据源,这样当显示选择器视图时,方法调用是针对一个类({{ 1}})没有实现委托方法。
在您的情况下,这是Interface Builder中的一个简单的拖放错误。