Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
NIBファイルをテンプレート的
に他のビューに埋め込む
iOS Developer勉強会.Urawa #1
2010/8/4
Masayuki Nii

1
Agenda

NIBファイルをテンプレートとして利用する
デモ
プログラム解説
実現手法

2
テンプレートNIBの必要性

なぜ必要になったか

•
•
•

複数の画面の一部で、同一のデザインが必要になった
メンテナンス性を考えてNIBで定義したい
1つの設計を他の画面にコピーするのは避けたい

カスタムViewをNIBで定義できない...
ほかの方法

Interface Builderのプラグイン

•
•
•

Mac Dev Center- Interface Builder Plug-in Programming
Guide.
iPhone Dev Centerのドキュメ...
一般的なNIBファイルとView

NIBファイル

MyViewController

Window

File's
Owner
View
View

ViewController

5
他のNIBをViewに取り込む
NIBファイル

View

TemplateView

NIBファイル
テンプレート
TemplateController

File's
Owner

View

MyViewController

Wind...
デモ

7
テンプレートの利用
テンプレートのファイル一式

•
•
•

TemplateView.h/m
TemplateController.h/m
TemplateController.xib

TemplateController.xibのVie...
テンプレートビューの動作

TemplateView.mの改造

•
•
•
•

initWithCoder:メソッドの組み込み
TemplateController.xibをロードし、得られたビューを、自分自身
のサブビューとして追加する
...
テンプレートを利用するコントローラ

元のコントローラは、テンプレートを継承する

•
•

テンプレートへのアウトレット、アクションを利用できる
テンプレートのNIBをロードするときに、元のコントローラがFile s
Ownerになることがで...
まとめ

内容をNIBで定義したカスタムビューの実現
元のビューコントローラや、アプリケーションに仕掛け
は必要だが、汎用的に利用できる

11
Upcoming SlideShare
Loading in …5
×

iOS.Dev.Urawa#1-NIBファイルをテンプレート的に他のビューに埋め込む

784 views

Published on

iOS.Dev.Urawa#1
2010/8/4
NIBファイルをテンプレート的に他のビューに埋め込む
新居雅行

Published in: Technology
  • Be the first to comment

  • Be the first to like this

iOS.Dev.Urawa#1-NIBファイルをテンプレート的に他のビューに埋め込む

  1. 1. NIBファイルをテンプレート的 に他のビューに埋め込む iOS Developer勉強会.Urawa #1 2010/8/4 Masayuki Nii 1
  2. 2. Agenda NIBファイルをテンプレートとして利用する デモ プログラム解説 実現手法 2
  3. 3. テンプレートNIBの必要性 なぜ必要になったか • • • 複数の画面の一部で、同一のデザインが必要になった メンテナンス性を考えてNIBで定義したい 1つの設計を他の画面にコピーするのは避けたい カスタムViewをNIBで定義できないか? • • • NIBはどうしてもコントローラを介することになる だが、NIBのロードはコントロール可能 なんとかできてしまった… 3
  4. 4. ほかの方法 Interface Builderのプラグイン • • • Mac Dev Center- Interface Builder Plug-in Programming Guide. iPhone Dev Centerのドキュメントも参照している 1つのアプリのためにプラグインは大層では? External Reference • • オブジェクトを置き換えられる模様 とは言え、実現は難しい? 4
  5. 5. 一般的なNIBファイルとView NIBファイル MyViewController Window File's Owner View View ViewController 5
  6. 6. 他のNIBをViewに取り込む NIBファイル View TemplateView NIBファイル テンプレート TemplateController File's Owner View MyViewController Window 初期化 File's Owner View ViewController ロード Viewの 取り込み 6
  7. 7. デモ 7
  8. 8. テンプレートの利用 テンプレートのファイル一式 • • • TemplateView.h/m TemplateController.h/m TemplateController.xib TemplateController.xibのViewの中にユーザインタフ ェースを定義する • TemplateController.h/mに、アウトレットやアクションを通常と おり定義する。ただし、実質的なソースはなくても良い テンプレートを利用する側 • UIViewをNIBファイルのViewの中に配置し、Classを TemplateViewにしておく 8
  9. 9. テンプレートビューの動作 TemplateView.mの改造 • • • • initWithCoder:メソッドの組み込み TemplateController.xibをロードし、得られたビューを、自分自身 のサブビューとして追加する TemplateViewを組み込む方のビューコントローラ(元のビューコ ントローラ)をFile s Ownerにしたい 元のビューコントローラを知らせようがないので、UIApplication からデリゲートされたクラスで「現在のビューコントローラ」を管 理するメンバ変数を定義する 9
  10. 10. テンプレートを利用するコントローラ 元のコントローラは、テンプレートを継承する • • テンプレートへのアウトレット、アクションを利用できる テンプレートのNIBをロードするときに、元のコントローラがFile s Ownerになることができる 確実にカスタムビューをロードさせるために • • • awakeFromNibメソッドを組み込む ここで、自分自身のルートビューにアクセスする。このときに、ロ ードされたインスタンスの初期化が一斉に行われる 先立って、「現在のビューコントローラ」を設定しておけば、 TemplateViewの初期化時に、File s Ownerとして利用できる 10
  11. 11. まとめ 内容をNIBで定義したカスタムビューの実現 元のビューコントローラや、アプリケーションに仕掛け は必要だが、汎用的に利用できる 11

×