それでは、実際にEventKitフレームワークを使用してBMI計算アプリからカレンダーイベントの追加を行ってみましょう。
Xcodeのグループとファイルから[Frameworks]を右クリックし、[追加]→[既存のフレームワーク]を選択します。
表示されたフレームワークの一覧から[EventKit.framework]を選択し、[追加]をクリックします。
以上でプロジェクトに[EventKit.framework]が追加されました。
次に、「BMICalcViewController.h」を以下のように編集します。
#import <UIKit/UIKit.h> #import <EventKit/EventKit.h> @interface BMICalcViewController : UIViewController<UITextFieldDelegate> { IBOutlet UITextField *heightText; // 身長テキストフィールド IBOutlet UITextField *weightText; // 体重テキストフィールド IBOutlet UIButton *calcButton; // 計算ボタン IBOutlet UIButton *resetButton; // リセットボタン IBOutlet UILabel *resultLabel; // 結果ラベル IBOutlet UIButton *saveButton; // 記録ボタン NSString *bmiStr; // BMI計算結果保存用の変数 NSString *result; // 判定結果保存用の変数 EKEventStore *eventStore; // カレンダーデータベースにアクセスするためのオブジェクト } @property (nonatomic, retain) UITextField *heightText; @property (nonatomic, retain) UITextField *weightText; @property (nonatomic, retain) UIButton *calcButton; @property (nonatomic, retain) UIButton *resetButton; @property (nonatomic, retain) UILabel *resultLabel; @property (nonatomic, retain) UIButton *saveButton; @property (nonatomic, retain) NSString *bmiStr; @property (nonatomic, retain) NSString *result; @property (nonatomic, retain) EKEventStore *eventStore; // 計算ボタンを押したときに呼ばれるメソッド -(IBAction)executeCalc:(id)sender; // リセットボタンを押したときに呼ばれるメソッド -(IBAction)executeReset:(id)sender; // 記録ボタンを押したときに呼ばれるメソッド -(IBAction)executeSave:(id)sender; @end
EventKitフレームワークのインポート宣言を追加し、カレンダーデータベースにアクセスするための「EKEventStore」クラスの変数を追加しました。
また、記録ボタン用の変数とメソッド、BMI計算結果と判定結果メッセージを格納しておく変数も追加しています。
次に、「BMICalcViewController.m」を以下のように編集します。
……【省略】…… @synthesize bmiStr; @synthesize result; ……【省略】…… - (void) viewDidLoad { ……【省略】…… // イベントストアを初期化 self.eventStore = [[EKEventStore alloc] init]; } ……【省略】…… // BMI計算実行処理 - (IBAction)executeCalc:(id) sender { ……【省略】…… // BMI計算結果(小数点第1位まで) self.bmiStr = [ NSString stringWithFormat: @"%.1f", bmi]; // 標準体重(kg) = 身長(m) × 身長(m) × BMI標準値(22) float stdWeight = (height * height) * 22; // 標準体重の計算結果(小数点第1位まで) NSString *stdWeightStr = [ NSString stringWithFormat: @"%.1f", stdWeight ]; // 結果判定を行う self.result = @""; // BMIが18.5より小さければ「やせ気味」 if (bmi < 18.5) { self.result = NSLocalizedString(@"wei_thin", @"Message for result thin."); } // BMIが18.5以上、25より小さければ「理想の体重」 else if (bmi >= 18.5 && bmi < 25) { self.result = NSLocalizedString(@"wei_normal", @"Message for result normal."); } // それ以上の場合は「肥満」 else { self.result = NSLocalizedString(@"wei_fat", @"Message for result fat."); } ……【省略】…… }
viewDidLoadメソッドでは、従来のコードに加え、EKEventStoreオブジェクトを初期化しています。
executeCalcメソッドでは、ローカル変数に格納していたBMI計算の結果を、追加したメンバ変数に格納するよう変更しています。
次ページでは、機能追加を完了し、EventKitの機能を試してみます。
Copyright © ITmedia, Inc. All Rights Reserved.