こんにちは、この質問は好奇心のためです。iOS UIPickerViewがnumberOfRowsInComponentを呼び出してもUIPickerViewDataSourceがバインドされていない
私のコントローラにはUIPickerViewがあり、デリゲートはIBからバインドされ、コントローラに実装されており、UIPickerViewDataSourceメソッドの1つはコントローラnumberOfRowsInComponentに実装されています。このメソッドは、even dataSourceと呼ばれ、完全に実装されて実装されていません。私はそれがどのように可能なのだろうか?私の考えの1つは、暗黙のうちにバックグラウンドから呼び出されたこのメソッドです。あなたがstoryboard
からdelegate
/datasource
設定したあなたのコメント、pickerView.delegate = self
/pickerView.datasource = self
とその同等で述べたように
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]
}
ピッカービューの代理人をストーリーボードから設定しましたか? –
はい、私のインターフェイスビルダーでは、このコードはbtwを働いています。私の質問はnumberOfRowsInComponentが実装されていないプロトコルでも呼び出された方法です – Eren