前提・実現したいこと
SwiftでUIAlertControllerを使っています。
その中にtextFieldを表示し、その中の値をDatePickerを使って入力できるようにしています。
しかし、textFieldの中をDatePickerが回るたびに更新するようにコードがうまく書けません。
うまく更新できる方法、または、textField自体を非表示にして、DatePickerのみの表示にしてしまう方法がございましたら、ご教示いただきたいです。
プログラミングを始めたばかりで、拙い説明になるかもしれませんが何卒ご容赦ください。
発生している問題・エラーメッセージ
addtargetをつかって関数を呼び出し、更新させようとするとエラーが出て止まります。
場所はAppDelegateのクラスの宣言のところです。
エラーメッセージ
Thread 1: signal SIGABRT
該当のソースコード
// UIdatepickerで予定時刻入力 alert2.addTextField (configurationHandler: { (dateText:UITextField!) -> Void in self.datePicker.datePickerMode = .time dateText.inputView = self.datePicker dateText.inputAccessoryView = self.toolBar self.datePicker.addTarget(self, action: Selector(("datePickerValueChanged:")), for: UIControl.Event.valueChanged) }) //datepickerを回した時にtextFieldを更新する関数 func datePickerValueChanged(sender:UIDatePicker, textfield:UITextField) { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "hh:mm"; textfield.text = dateFormatter.string(from: sender.date) }
試したこと
おそらく、datePickerValueChangedで指定している引数に問題があるのではないかと思っています。
senderはselfで場所を指定したいのですが、textfieldはAlert内のdateTextを指定したいです。
addtargetでtargetがselfで指定しているので問題が起きているのではないかと推測して、targetを分ける方法や、addtextfieldでViewController内のUITextFieldの定数を指定する方法を探してみたのですが、見つかりませんでした。