StoryboardのExtraViewの便利な使い道(UITextField)
Dec 9, 2017 · iosswift3
概要
UITextFieldのキーボードにボタンをつけたい場合に、ほぼコードを書かずにStoryboardで完結する方法
キーボードの上部に「キャンセル」とか「実行」みたいなボタンをつけたい場合、ググると出てくるのはUIToolbarをコードで生成してinputAccessoryViewに追加する方法だと思うが、この方法は結構コードを書かないといけない
実はそんな面倒なことをせずともExtraViewを使えばUI部分をStoryboardで作成することができる
手順
- 一旦、
ViewController上にUIToolbarを配置する UIToolbarに必要なボタンなどを配置する- タップイベントも通常と同じ方法(
@IBAction)で実装する UIToolbarを@IBOutletでViewControllerのメンバに追加しておく
- タップイベントも通常と同じ方法(
- 作成した
UIToolbarをExtraViewに移動させる
(UIToolbarをUIViewControllerのFirst ResponderとExitのアイコンの間ぐらいにドラッグ&ドロップする)
作成できれば、
// textField: 表示させたいフィールド
// toolbar: 2-1で紐づけたUIToolbar
textField.inputAccessoryView = toolbar
というのをviewDidLoadなり、textFieldのdidSetなりで呼べばOK
これによって、ViewControllerの中で画面を生成するコードを書かなくてもよくなってすっきりとする
この方法は他にもいろいろと応用が効き、例えば、UITextFieldのinputViewにUIPickerを入れて、コンボボックスの様なUIを作るといった場合にも使える
開発環境
- Xcode 9.1
- iOS 11.1
