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