アプリ開発『WeightControl』vol.16
一週間ほどの旅行に出ていたため、アプリ制作がストップしていました。僕は札幌なのですが、今回、千葉を拠点に千葉、東京、横浜あたりを観光しました。札幌と違いかなり暖かかったです。
今回からはBMIタブに入るのですが、BMIを計算するために、設定タブで登録する身長と、体重登録タブで登録する最新の体重がデータとして必要になります。これらを取得しなければBMIを計算することができません。
それをするためには、異なるタブ(クラス)のデータをクラスをまたいで取得する必要があります。そのためには、AppDelegateクラスを活用します。AppDelegateクラスにデータを置いておくことにより、どのタブ(クラス)からもアクセスしてデータを取得できるようになります。
これについては、以前勉強した『よくわかるiPhoneアプリ開発の教科書【iOS 6&Xcode 4.6対応版】』がとても役に立ちました。とても、イメージがしやすいです。
また、実装には下記のサイトを参考にしながら進めました。
・AppDelegateで変数を宣言して、全てのクラスで使用する。 | App Camp
・アプリ開発の基本〜グローバルな変数の使い方 : iPhoneアプリ開発日誌
設定タブに登録する身長についてはユーザーデフォルトに保存して、アプリ終了後に再起動してもデータが残っているようにしていますが、その設定タブの身長はAppDelegate.mの下記メソッドでアプリ起動時に取得するようにしました。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
ただし、これだと、AppDelegateでアプリ起動時に設定タブの身長を取得することができますが、途中で身長を変更した場合に、身長が新しいデータに上書きされません。なぜなら、AppDelegateでアプリ起動時に取得したデータのままになっているからです。
そのため、設定タブで身長登録時に、AppDelegateでアプリ起動時に取得していた身長を上書きするために、上記サイトのコメント「グローバル変数に保存」のところで書いているようなコードを追加する必要がありました。これに気づくまでに、すごーく、すごーく、時間がかかってしまいました。
同様に、体重登録タブで登録した最新の体重についてもAppDelegateで取得できるようにしました。今は、BMIタブに、とりあえず、設定タブの身長と、体重登録タブの最新の体重がリアルタイムに表示されるような状態になっています。
次回からは、これらのデータをベースにして、実際にBMIが自動計算されるような仕組みを作り、BMIの判定基準がわかるようなデータも一緒に表示させるような感じにしたいと思います!