読者です 読者をやめる 読者になる 読者になる

Taker's iOSアプリ開発調査ログ

iOSアプリ開発に関する調査メモ置き場

StoryboardにNibファイルを読み込む

お題

Storyboardをメインで使用しているが、一部のViewを再利用したい。またはStoryboard上では編集が困難なので管理を別にしてしまいたい。

対応

Storyboard上にカスタムViewを配備し、そのカスタムViewにNibファイルから読み込んだViewをaddSubViewする。

  1. Xibファイルを生成する (例:MyView.xib)
  2. UIViewを継承したクラスを作る(MyView.swift)
  3. MyView.xibのFile's OwnerにMyViewを指定する
  4. MyViewクラスにinit:coderメソッドを定義する
  5. init:coderメソッドでNSBundle:loadNibNamed()でNibファイルをロードする
  6. ロードしたNibファイルをaddSubViewする
  7. StoryBoardにViewを追加し、custom classを作成したカスタムViewにする
//MyView.swift
class MyView: UIView {
    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        let headerView = NSBundle.mainBundle().loadNibNamed("MyView", owner: self, options: nil)[0] as UIView;
        self.addSubview(headerView)
    }
}

補足

  • UITableViewのヘッダー、フッターのビュー設定などにも使える
  • StoryBoard上にXibで定義したUIが表示されるわけではない。