UIPickerについての質問です。
UIPickerのDataSourceとDelegateを設計上、
別のクラスから参照したいのですがどういうわけか、うまくいきません。
TableViewでは
参照したいクラスを定数で設定し、
delegateとdataSorceのself
をその定数名に設定すればできました。
しかし、PickerViewだとなぜかうまくいきませんでした。
何か間違えているのでしょうか。
###前提・実現したいこと
UIPickerのDataSourceとDelegateを別のクラスから呼びたいです。
###発生している問題・エラーメッセージ
ビルドは問題なかったのですが、シュミレーターでみた際、Pickerに値が反映されませんでした。
###該当のソースコード
Swift
1// ViewController 2 3import UIKit 4 5class ViewController: UIViewController { 6 // テキストフィールド 7 @IBOutlet weak var textFeild: UITextField! 8 // ピッカービュー 9 var myPicker: UIPickerView? 10 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 14 // DataSourceとDelegateのクラス 15 let dataSource = PickerData() 16 17 myPicker = UIPickerView() 18 myPicker?.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: (myPicker?.bounds.size.height)!) 19 20 // うまく参照できていない? 21 myPicker?.delegate = dataSource 22 myPicker?.dataSource = dataSource 23 24 textFeild.inputView = myPicker 25 } 26 27 override func didReceiveMemoryWarning() { 28 super.didReceiveMemoryWarning() 29 // Dispose of any resources that can be recreated. 30 } 31}
Swift
1// PickerData 2 3import UIKit 4 5class PickerData: NSObject , UIPickerViewDataSource , UIPickerViewDelegate { 6 7 // DataSource 8 func numberOfComponents(in pickerView: UIPickerView) -> Int { 9 return 1 10 } 11 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 12 return 1 13 } 14 15 // Delegate 16 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 17 return "hogehoge" 18 19 } 20 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 21 } 22}
###試したこと
TableViewでは問題なくできました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/01 01:46