DragDropDataSourceをインスタンス化する
RMGDocument.nibの中にDragDropDataSourceクラスのオブジェクトをインスタンス化します。
Xcodeの「グループとファイル」リストにあるRMGDocument.nibをダブルクリックしてInterface Builderを起動して下さい。
Libraryパレットの中にObjectという青い立方体のアイコンが入っていますので探して下さい。"Objects & Controllers"グループの中の"Controllers"の中に入っています。
見つかったらそれをドラッグして、nibウィンドウでドロップします。
このオブジェクトがDragDropDataSourceクラスのオブジェクトになる様に設定します。
インスペクタの"i"アイコンを選択してClass Identityを設定します。先ほどDragDropDataSourceクラスを作成したので、これが選べる様になっている筈です。
ついでにnibウィンドウ上で表示される名前をDataSourceにしておきます。これはInterface Builder IdentityのNameを設定すればOKです。
すると、こうなります。
DataSourceアイコンをクリックして選択し、アウトレットを接続します。
arrayController行の右端にある丸をクリックしてドラッグすると線がのびてくるので、Lissajousアイコン上でマウスボタンを放すと接続されます。
テーブルビューのdataSourceアウトレットを接続する
次にテーブルビューのdataSourceアウトレットを接続します。
dataSource行の右端にある丸をクリックしてドラッグすると線がのびてくるので、DataSourceアイコン上でマウスボタンを放すと接続されます。

配列コントローラにソートディスクリプタを設定する
ドラッグ&ドロップで書き換えられるのは、順番を表すorder属性の値です。よってテーブルビューはorderの値で並べ替えて表示される様にしておく必要があります。
そのために配列コントローラにソートディスクリプタをセットします。
//
// LissajousTableView.m
//
- (void)awakeFromNib
{
NSSortDescriptor *orderSort;
orderSort = [[NSSortDescriptor alloc] initWithKey:@"order" ascending:YES];
[arrayController setSortDescriptors:[NSArray arrayWithObject:orderSort]];
[orderSort release];
}
ドラッグを受け入れるデータタイプを登録する
registerForDraggedTypes:メソッドでデータタイプを登録します。複数のデータタイプを登録できる様に配列を渡す様になっています。
リサージュ図形を受け入れる様にするので、[Lissajous dataType]を登録します。
//
// LissajousTableView.m
//
- (void)awakeFromNib
{
NSSortDescriptor *orderSort;
orderSort = [[NSSortDescriptor alloc] initWithKey:@"order" ascending:YES];
[arrayController setSortDescriptors:[NSArray arrayWithObject:orderSort]];
[orderSort release];
[self registerForDraggedTypes:[NSArray arrayWithObject:[Lissajous dataType]]];
}

ホーム
前へ