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ファイルをテンプレート的に他のビューに埋め込む

707 views

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
707
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×