Swift 複数コントローラー
例えば、日付のテキストフィールドが二カ所以上あって、datePickerViewを使わないといけない、或いは、pickerViewが同様に数カ所有った場合、コントロール毎に同じ処理を書くのは、非常に面倒臭い。
例えば、MSのVSよろしく、コントローラーの配列が出来て、コントロールのプログラムがまとめられると、非常に楽なのに。。。
[swift コントロール配列]でググってもVSらしいプログラムが見当たらない。
あきらめて、フルでプログラム書こうとした矢先、delegateなら出来んじゃね?いや、そういう用途じゃね?シランの俺だけ??とか思って、意地でプログラミングしたら、すんなりできてしまった。
備忘録
-
- UITextFieldDelegate を継承
- delegateしたいコントローラーを登録
- func textFieldDidBeginEditing(textField: UITextField)
- textField変数にて、どのフィールドか判断。Restoration IDを利用しました。
- 処理分岐
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. // delegeteを使いたいコントローラー登録 self.txtField01.delegate = self // Restoration ID : t01 self.txtField02.delegate = self // Restoration ID : t02 self.txtField03.delegate = self // Restoration ID : t03 } func textFieldDidBeginEditing(textField: UITextField) { if textField.restorationIdentifier != nil { let txtIdentifer = textField.restorationIdentifier! if let idtr = txtIdentifer.rangeOfString("t01"){ // 処理 }
果たしてこれで良いのかは、しりませぬ。
ただ、同じ事を何度も書く手間は回避されたというお話でした。