前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

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が表示されるわけではない。