・エラーの意味をどのように認識していますか?
・インデントがおかしいので直してください。
エラーの意味が分かっていて、インデントを修正すれば、間違いに気付くかもしれません。
- text_field_rosenにはdaieria_arrの路線名が表示されるのですが選択できません
- その為、text_field_ekimeiには何も表示されなくなってしまいました
- text_field_statusに表示される値がtext_field_causeで表示される値("安全確認")と同じになってしまいました。
- func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
active_textfield?.text = current_arr[row]においてWill never be executedというエラーが出てしまいました
どのように修正すればよろしいでしょうか?
よろしくお願いいたします。
コード import UIKit class ViewController: UIViewController,UITextFieldDelegate,UIPickerViewDelegate,UIPickerViewDataSource { @IBOutlet weak var text_field_rosen: UITextField! @IBOutlet weak var text_field_ekimei: UITextField! @IBOutlet weak var text_field_cause: UITextField! @IBOutlet weak var text_field_status: UITextField! let chueria_dic:[String:[String]] = [ "銀座線":["","渋谷","表参道","外苑前","青山一丁目","赤坂見附","溜池山王","虎ノ門","新橋","銀座","京橋","日本橋","三越前","神田","末広町","上野広小路","上野","稲荷町","田原町","浅草"], "丸ノ内線":["","荻窪","南阿佐ヶ谷","新高円寺","東高円寺","新中野","中野坂上","西新宿","新宿","新宿三丁目","新宿御苑前","四谷三丁目","四ツ谷","赤坂見附","国会議事堂前","霞ヶ関","銀座","東京","大手町","淡路町","御茶ノ水","本郷三丁目","後楽園","茗荷谷","新大塚","池袋","方南町","中野富士見町","中野新橋"], "日比谷線":["","中目黒","恵比寿","広尾","六本木","神谷町","霞ヶ関","日比谷","銀座","東銀座","築地","八丁堀","茅場町","人形町","小伝馬町","秋葉原","仲御徒町","上野","入谷","三ノ輪","南千住","北千住"], "東西線":["中野","落合","高田馬場","早稲田","神楽坂","飯田橋","九段下","竹橋","大手町","日本橋","茅場町","門前仲町","木場","東陽町","南砂町","西葛西","葛西","浦安","南行徳","行徳","妙典","原木中山","西船橋"], "千代田線":["代々木上原","代々木公園","明治神宮前","表参道","乃木坂","赤坂","国会議事堂前","霞ヶ関","日比谷","二重橋前","大手町","新御茶ノ水","湯島","根津","千駄木","西日暮里","町屋","北千住","綾瀬","北綾瀬"], "有楽町線":["和光市","地下鉄成増","地下鉄赤塚","平和台","氷川台","小竹向原","千川","要町","池袋","東池袋","護国寺","江戸川橋","飯田橋","市ヶ谷","麹町","永田町","桜田門","有楽町","銀座一丁目","新富町","月島","豊洲","辰巳","新木場"], "半蔵門線":["渋谷","表参道","青山一丁目","永田町","半蔵門","九段下","神保町","大手町","三越前","水天宮前","清澄白河","住吉","錦糸町","押上"], "南北線":["目黒","白金台","白金高輪","麻布十番","六本木一丁目","溜池山王","永田町","四ツ谷","市ヶ谷","飯田橋","後楽園","東大前","本駒込","駒込","西ヶ原","王子","王子神谷","志茂","赤羽岩淵"], "副都心線":["和光市","地下鉄成増","地下鉄赤塚","平和台","氷川台","小竹向原","千川","要町","池袋","雑司が谷","西早稲田","東新宿","新宿三丁目","北参道","明治神宮前","渋谷"]] let daieria_arr = ["","銀座線","丸ノ内線","日比谷線","東西線","千代田線","有楽町線","半蔵門線","南北線","副都心線"] let chueria_arr = [""] let my_pickerView = UIPickerView() var current_arr : [String] = [] var active_textfield : UITextField! var pickerView_1:UIPickerView = UIPickerView() let causelist = ["安全確認","",""] var pickerView_2:UIPickerView = UIPickerView() let statuslist = ["運転見合わせ","ダイヤ乱れ"] override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. text_field_rosen.delegate = self text_field_ekimei.delegate = self text_field_cause.delegate = self my_pickerView.delegate = self my_pickerView.dataSource = self pickerView_1.tag = 3 pickerView_1.delegate = self pickerView_1.dataSource = self pickerView_2.tag = 4 pickerView_2.delegate = self pickerView_2.dataSource = self text_field_rosen.inputView = my_pickerView text_field_ekimei.inputView = my_pickerView text_field_cause.inputView = pickerView_1 text_field_status.inputView = pickerView_2 //ここから付け足し"donebutton" let toolBar = UIToolbar() toolBar.barStyle = UIBarStyle.default toolBar.isTranslucent = true toolBar.tintColor = UIColor.black let doneButton = UIBarButtonItem(title: "決定", style: UIBarButtonItem.Style.done, target: self, action: #selector(ViewController.donePressed)) let cancelButton = UIBarButtonItem(title: "戻る", style: UIBarButtonItem.Style.plain, target: self, action: #selector(ViewController.donePressed)) let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace,target: nil, action: nil) toolBar.setItems([cancelButton,spaceButton,doneButton],animated:false) toolBar.isUserInteractionEnabled = true toolBar.sizeToFit() text_field_ekimei.inputAccessoryView = toolBar text_field_rosen.inputAccessoryView = toolBar text_field_cause.inputAccessoryView = toolBar } @objc func donePressed(){ view.endEditing(true) func cancelPressed(){ text_field_ekimei.text="" view.endEditing(true) } } func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { active_textfield = textField switch textField{ case text_field_rosen:current_arr = daieria_arr case text_field_ekimei: if let daieria = text_field_rosen.text,!daieria.isEmpty{ current_arr = chueria_dic[daieria]! }else{ current_arr = chueria_arr } default:print("default") } my_pickerView.reloadAllComponents() return true } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { switch pickerView { case my_pickerView: return current_arr.count case pickerView_1: return causelist.count case pickerView_2:return statuslist.count default: fatalError() } } //UIPickerViewの表示する内容を設定 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { if pickerView==my_pickerView{ return current_arr[row] }else if pickerView_1 == pickerView_1{ return causelist[row] }else if pickerView_2 == pickerView_2{ return statuslist[row] }else{ return nil } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { active_textfield?.text = current_arr[row] } func pickerView(_ pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat { return 1 } } }
あなたの回答
tips
プレビュー