嗨,这个问题只是出于好奇。
我的控制器中有UIPickerView,委托是从IB绑定并在控制器中实现的,并且UIPickerView数据源方法之一在控制器编号OfRowsInComponent中实现。即使数据源没有绑定和完全实现,此方法也会被调用。我想知道这怎么可能?我的想法之一是,这个从后台隐式调用的方法......我的代码;
class ViewController: UIViewController, UIPickerViewDelegate {
let titles = ["item 1", "item 2", "item 3", "item 4", "item 5"]
override func viewDidLoad() {
super.viewDidLoad()
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return titles.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return titles[row]
}
正如您在评论中提到的,您已从 storyboard
中设置了 delegate
/datasource
,那么它相当于 pickerView.delegate = self
/pickerView.datasource = self
.
您可以通过编码或从情节提要分配delegate
和datasource
。所以在你的情况下,你已经从storyboard
完成了它,所以它实际上与你的pickerView
绑定。