今回はChimpanzeeGame.xcodeproj側を開きます。
 まずは

 ChimpanzeeGameAppDelegate

メソッドの変更。

 buttonSizeIndex

を、そのメソッド内でしか参照することができないローカル変数から、どのメソッドでも参照できるメンバ変数に変更し

 int butonCount[] = {5,4,3};



 applicationDidFinishLaunching

メソッドから外に出して

 static int butonCount[] = {5,4,3};

とする。
これらの変更は

 toggleView

メソッドでこれらの値を参照するための変更。設定ビューに切り替わる時は、設定ビューコントローラに現在の設定を知らせ

[flipsideViewController setButtonCount:(float)buttonSizeIndex / 2.0];
[flipsideViewController setLevelRatio:(float)[viewController getLevelRatio]];

ゲーム画面に戻る時は設定ビューの状態をゲーム画面コントローラに反映させる。

[viewController setLevelRatio:(double)[flipsideViewController getLevelRatio]];
buttonSizeIndex = [flipsideViewController getButtonCount] * 2;
[viewController setSize:butonCount[buttonSizeIndex] vCount:butonCount[buttonSizeIndex]];

ここで

 (float)buttonSizeIndex / 2.0

としているのは、buttonSizeIndexが0,1,2のいずれかの値を取るので、これをflipsideViewControllerのスライダ用に0.0~1.0に変換するため。同様に

 [flipsideViewController getButtonCount] * 2

とすることで、0.0~1.0の値を0,1,2のいずれかの値に変換している。ただ、これだと2の値は、スライダが右端までいかないと取れないことになる。

 buttonSizeIndex = (int)([flipsideViewController getButtonCount] * 2.999);

とした方が、均等になる。3.0としてしまうと、0,1,2,3の範囲になってしまうので注意。これはC言語の浮動小数点型から整数型にする時の決まり。

0.9 -> 0
1.5 -> 1
1.9 -> 1

というように、四捨五入ではなく、切り捨てになる。

 忘れちゃいけないのが

 applicationWillTerminate

メソッドでの処理。
 いつもゲーム画面の方で終了するとは限らない。設定ビュー側で終了する場合も考慮して

if ([viewController.view superview] != nil) {

とし、どちらのコントローラから値を取り出すかのが適切か判断する。
 これで、準備OKということでさっそくビルドして実行すると、設定ビューに切り替えても、スライダはそれなりの位置にきてるけど、画面の表示が以下のようになったまま。

テン・シー・シー-fig.1

 これは、

 FlipsideViewController.m



 setButtonCount
 setLevelRatio

メソッド実装不備。それぞれ

[_view setButtonCount:inCount];
[_view setLevelRatio:inLevelRatio];

としてビューへの反映を忘れていた。
気を取り直してビルドして実行すると、今度はちゃんと反映されています。

ただね~、使いにくい。
どんな設定状態か、ひじょ~にわかりずらい。

というわけで、次回はFlipsideViewを文字表示からグラフィック表示に変えてみるザンスよ。

------------
サンプルプロジェクト:Chimpanzee-14.zip