ページ

2009年11月25日水曜日

NSTableView にカスタムビューを表示する(2) ひな形作成〜Cocoa Bindings

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

(前回)Cocoaの日々: NSTableView にカスタムビューを表示する(調査中)

調査用にサンプルプログラムを作る。今回はテーブルビューにテストデータを表示するだけのプロジェクトを作成してみた。

クラス作成

Xcodeを立ち上げテンプレートから Cocoa Application を選んでプロジェクトを新規に作成する(Xcode3.1 / MacOSX10.5 で作成)。

まずコントローラーを作る。このクラスは表示用のデータ(配列)を保持している。初期化時にテストデータを生成して配列へ詰めておく。

TableViewController.h

@interface TableViewController : NSObject {

NSMutableArray* list;
}
@property (assign) NSMutableArray* list;

@end


TableViewController.m

- (id)init
{
self = [super init];
if (self) {
list = [[NSMutableArray alloc] init];

Homepage* homepage;

for (int i=0; i < 10; i++) {
homepage = [[[Homepage alloc] init] autorelease];
homepage.title = [NSString stringWithFormat:@"SAMPLE-%d", i];
homepage.image = @"sample.jpg";
[list addObject:homepage];
}
}
return self;
}



UI作成

次に InterfaceBuilder を起動しウィンドウへ NSTableView を貼付ける。

TableViewController と NSArrayController をインスタンス化しておく。

NSArrayController は NSTableView(のカラム)と TableViewController の間でのデータの橋渡しの役割を果たす。

カラムのバインディング設定で NSArrayController へバインドする。

一方、NSArrayController は TableViewController の list(NSMutableArray)へバインドする。

これでMVCが構成される。
 TableViewController.list <==> NSArrayController <==> NSTableViewColumn

 (Model)          (Controller)    (View)

(参考)Cocoaの日々 - 2005年8月


最終的な NSArrayController のバインド状態は下図のようになる。


実行

実行してみよう。

出た。


ソースコード

GitHub からどうぞ。
CustomCell at 20091125 from xcatsan's SampleCode - GitHub


- - - -
これをベースにしてカスタムビューを表示する検証を進める。