頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


MVCだとナビゲーションバー上のボタンはどこに書くの?

MVCデザインパターンを考慮してコードを書こうとしたんだけど、あれ?ナビゲーションバー上のボタンはどこに記述すればいいの?ってなっちゃったんだよ。

ナビゲーションバー上のボタン

↑モーダルビュー的なビューの右上(ナビゲーションバー上)に閉じるボタンとかあるじゃない。ああいうのを記述するのって俺は今までviewControllerクラス内の例えばloadView:にこんな感じで書いてたのよ。
{
    UIButton *closeButton = [UIButton buttonWithType:102];
    [closeButton setTitle:@"CLOSE" forState:UIControlStateNormal];
    [closeButton addTarget:self action:@selector(tappedCloseButton) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *closeButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:closeButton] autorelease];
    self.navigationItem.rightBarButtonItem = closeButtonItem;
}
このボタン関連の記述をCから切り分けて、Vに相当する部分に置こうとしたんだよ。見栄えに関連するのは全てVに置くってことで。
でもさ、ナビゲーションバー上のボタンだからUIViewControllerクラスのオブジェクトの参照が必要になるよね。
Controllerクラス内でVのオブジェクトを作る部分でこんな感じにCの参照を渡すわけ?
{
    View *view = [[View alloc] initWithFrame:frame controller:self];
    self.view = view;
}
まあこれでもいいんだけどなんかしっくり来ないのは俺だけ?そもそもMVCデザインパターンだとVはCの参照なんか知らなくてもいいはずじゃなかったっけ?VからCへのメッセージはdelegateを使うわけで。
受け取ったControllerの参照をretainしておく必要はないとはいえ、なんだかなあって感じ。

うーん、今後人様のコードを見る時に他の人はどうやってるのか注意しておこうっと。

<< OpenGL ESで日本語のコメントでエラーがでる  TopPage  27インチディスプレイでXcodeを使う >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/836-8a168087




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad