StoryboardのExtraViewの便利な使い道(UITextField)

概要

UITextFieldのキーボードにボタンをつけたい場合に、ほぼコードを書かずにStoryboardで完結する方法

キーボードの上部に「キャンセル」とか「実行」みたいなボタンをつけたい場合、ググると出てくるのはUIToolbarをコードで生成してinputAccessoryViewに追加する方法だと思うが、この方法は結構コードを書かないといけない

実はそんな面倒なことをせずともExtraViewを使えばUI部分をStoryboardで作成することができる

手順

  1. 一旦、ViewController上にUIToolbarを配置する
  2. UIToolbarに必要なボタンなどを配置する
    1. タップイベントも通常と同じ方法(@IBAction)で実装する
    2. UIToolbar@IBOutletViewControllerのメンバに追加しておく
  3. 作成したUIToolbarExtraViewに移動させる
    UIToolbarUIViewControllerFirst ResponderExitのアイコンの間ぐらいにドラッグ&ドロップする)

作成できれば、

// textField: 表示させたいフィールド
// toolbar: 2-1で紐づけたUIToolbar
textField.inputAccessoryView = toolbar

というのをviewDidLoadなり、textFielddidSetなりで呼べばOK

これによって、ViewControllerの中で画面を生成するコードを書かなくてもよくなってすっきりとする

この方法は他にもいろいろと応用が効き、例えば、UITextFieldinputViewUIPickerを入れて、コンボボックスの様なUIを作るといった場合にも使える

開発環境