私は多くのチュートリアルと公式のAppleドキュメントを読みましたが、このコードの何が問題なのかを理解してはなりません。
var dueDatePicker = UIDatePicker()
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
textField.inputView = dueDatePicker
dueDatePicker.addTarget(self, action: #selector(datePickerValueChanged(_:)), for: UIControlEvents.valueChanged)
}
func datePickerValueChanged(_ sender: UIDatePicker){
//Do Stuff
}
実行時にtextFieldをクリックすると、UIDatePickerが表示されます。セレクターが指す関数が実行されます。UIDatePickerの外部のUIオブジェクトをクリックするとすぐに、アプリが次のエラーでクラッシュします。
キャッチされない例外 'NSInvalidArgumentException'が原因でアプリを終了しています、理由: '-[YourApp.PromiseViewController dueDateChanged:]:認識されないセレクターがインスタンス0x100b12ae0に送信されました'
私が理解していないのは、目的の関数への「セレクター」またはポインターが最初に認識されるということです。ただし、別のUIオブジェクトから別のイベントをトリガーすると、この例外がスローされます。
なんでこんなことが起こっているの?
この例外datePickerValueChanged()
は、が最初に呼び出されたときにトリガーされるべきではありませんか?
エラーは、セレクターを使用したアクションがdueDateChanged(_:)
ターゲットアクションとして追加されたことを示しています。
1つのコントロールに複数のターゲットアクションを追加できます。どこか、おそらくストーリーボードまたはxibで、に別のアクションが追加されていdueDatePicker
ます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加