(前回)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
(参考)Cocoaの日々 - 2005年8月
最終的な NSArrayController のバインド状態は下図のようになる。
実行
実行してみよう。
出た。
ソースコード
GitHub からどうぞ。
CustomCell at 20091125 from xcatsan's SampleCode - GitHub
- - - -
これをベースにしてカスタムビューを表示する検証を進める。