ちょっと寄り道 - 符計算アプリ

昨日から麻雀用の符計算アプリに着手し始めました。
TableViewやCustomCellについての知識や応用がぐんぐん向上していって勉強用には最適です。

さてさて前回の日記で「明日試してみて〜」とか書いた件ですが、
今回の符計算アプリで遭遇したので軽くメモっておきます。

・今作っている符計算の構造
 window
 -> FukeisanViewController (rootViewController)
  -> FuSelectViewController( UITableViewController)
    - HansuuCell (UITableViewCell)
    - KotsuCell (UITableViewCell)... etc


上記の構造で作っていますが、HansuuCellでユーザーが翻数を変更したときに、HansuuCell自体の数値を更新するのはもちろんの事、FukeisanViewController上の計算結果も更新しなければなりません。
調べてみた所方法が2つありました。


1.Delegateを作成する (よくわからないけど、汎用性に乏しそう)
2.KotsuCellにFukeisanViewConrollerのポインタを持たせる(今回の方法)


今回は汎用性に優れている2の方法を使っていまのところうまく動いているので手順を書いておきます。


<手順>
1. @property (nonatomic, assign) id rootFuView; もろもろをFuSelectViewControllerとKotsuCellに追加。
 ※nonatomic、assignで正しいかどうかはあまりよくわかっていません。

2.FuSelectViewControllerの初期化後に fuSelectViewController.rootFuView = self;
 KotsuCellの初期化後に cell.rootFuView = self.rootFuVuew;
 とやりポインタの受け渡し。

3.KotsuCell内の任意の関数内で
 FukeisanViewController *root = self.rootFuView; 後、
 [root refreshPoint];とか好きなように使う。


今回、NSInteger型の各箇所の符の値もFukeisanViewControllerのものを借りるかたちを取ったのですが、手順3の型宣言→ポインタの受け渡しが無い場合に「そんな関数ねーよ!」とお叱りを受けました。
idを使うときは一度明文化の上、委譲していおいて損は無さそうです。

というわけで、前回のTabBarControllerの上にViewを表示したい件についてもこれを生かせばなんとかなりそうです。
設定用のViewだけなので方法1のDelegateに挑戦するのもありかな。