

ウィンドウのリサイズイベントは、viewDidEndLiveResizeメソッドで拾うことができる。MyMatrixの表示状態が変わるのだから、MyMatrixクラスのviewDidEndLiveResizeメソッドをオーバーライドしてみた。
- (void)viewDidEndLiveResizeここで1つ問題があった。縦横のセルの数が変わる際、それらのセルに対して画像を再設定してあげないといけないのだが、この画像の情報はモデルクラスに持たせてある。そこで、このビュークラスは、コントローラークラスに依頼してその情報を設定してもらうと良さそうだ。
{
NSLog(@"viewDidEndLiveResize");
[self maybeJustExpand];
[controller assignImageToCell];
[self sizeToCells];
[self setNeedsDisplay:YES];
[super viewDidEndLiveResize];
}
MyMatrixからMyControllerを参照したいので、これはアウトレット(outlet)の出番だ。Interface BuilderでMyMatrixからMyControllerにControl+ドラッグできればいい。次のスクリーンショットみたいに設定したいのだが、これがなかなかうまく行かない。



これでMyMatrixはメンバ変数controllerでMyControllerのインスタンスにアクセスできるようになった。ここで、(void)MyController:assignImageToCellというメソッドを書いて、モデルとビューをつないでやることで無事リサイズ時の再配置を実装できた。
これで最低限の表示はできるようになった。次は一歩進めてドラッグアンドドロップを実装してみようと思う。ゴールは、ファインダ等外部から画像ファイルをこのウィンドウにドラッグアンドドロップした際、その画像をモデルクラスに追加し、セルに表示することとする。
0 件のコメント:
コメントを投稿