修正日: 09/02/23
練習問題8
解答編
では解答例です。ソースコードを自由に書けるようになってきて、課題に対する解答も千差万別、いろいろな書き方が出てくると思います。あくまでも私の例ですので、それぞれ好きなやり方を見つけてください。
以下変更に関係のある部分だけ。
- (IBAction)changeBMI:(id)sender
{
bmi=[sender floatValue];
[self calcWeightAndSet];
}
- (IBAction)changeHeight:(id)sender
{
height=[sender floatValue];
[self calcBMIAndSet];
}
- (IBAction)changeWeight:(id)sender
{
weight=[sender floatValue];
[self calcBMIAndSet];
}
- (void)calcWeightAndSet
{
weight=calculateWeight(height, bmi);
[self setValues];
}
- (void)calcBMIAndSet
{
bmi=calculateBMI(height, weight);
[self setValues];
}
- (void)setValues
{
[bmiField setFloatValue:bmi];
[bmiSlider setFloatValue:bmi];
[heightField setFloatValue:height];
[heightSlider setFloatValue:height];
[weightField setFloatValue:weight];
[weightSlider setFloatValue:weight];
}
ソースコードを読めばわかると思うので、説明は省略します。手抜きじゃないですよ(笑)。当然Nibファイルやヘッダファイルも直す必要があります。
実はこれだけで動かすと、起動直後の挙動が少し変になります。なぜかというと・・・自分で調べてなおしてみてください。宿題ということで。それを含めた解答サンプルはこちら。修正部分に理由を書いておきました。
今回は割と簡単だったと思いますが、いかがでしょうか?次回はちょっと欲張ってキーバリューコーディングについての説明か、もしくは初期設定への保存方法について解説したいと思います。初期設定の方が先かな?