次に、記録ボタンが押されたときに呼ばれるexecuteSaveメソッドを追加します。
-(IBAction)executeSave:(id)sender { // 新しいカレンダーイベントを作成 EKEvent *event = [EKEvent eventWithEventStore:self.eventStore]; // イベントのタイトルを設定 event.title = [NSString stringWithFormat:@"BMI:%@ %@",self.bmiStr, self.result]; // 開始日を設定 event.startDate = [[NSDate alloc] init]; // 終了日を設定 event.endDate = [[NSDate alloc] initWithTimeInterval:60 sinceDate:event.startDate]; // 注釈にBMI計算結果の表示内容を設定 event.notes = resultLabel.text; // イベントが関連付けられるカレンダーを設定 [event setCalendar:[self.eventStore defaultCalendarForNewEvents]]; // イベントをカレンダーデータベースに保存 [self.eventStore saveEvent:event span:EKSpanThisEvent error: nil]; resultLabel.text = [NSString stringWithFormat:@"記録しました\n%@", event.title]; }
カレンダーイベントを表すEKEventオブジェクトを新規作成し、カレンダーデータベースへの登録を行っています。ここではタイトル・開始日・終了日・関連付けるカレンダーにデフォルトのカレンダーを指定しています。
なおEKEventには、以下を設定できます。
次に、メンバ変数の解放も忘れずに行いましょう。
- (void)dealloc { [heightText release]; [weightText release]; [calcButton release]; [resetButton release]; [resultLabel release]; [bmiStr release]; [result release]; [eventStore release]; [super dealloc]; }
最後に、Interface Builderで記録ボタンを追加し、Xcodeで作成した処理との紐付けをします。
「BMICalcViewController.xib(ja)」をInterface Builderで開き、「記録ボタン」を追加します。
「TouchDown」イベントに先ほど追加した「executeSave」メソッドを設定します。
以上で実装は完了です。ビルドして実行してみましょう。
なお、今回はEventKitフレームワークの動作確認が目的のため、国際化は行っていません。シミュレータの言語設定を「日本語」にしてからアプリを起動してください。
BMIの計算を行った後に記録ボタンを押すと、「記録しました」と表示されるようになりました。しかしiPhoneシミューレータにはカレンダーアプリが搭載されていないため、これだけでは本当にイベントが保存されたのか分かりません。
iOS Reference Libraryにカレンダーイベントの一覧を表示するEventKitのサンプルアプリケーションがあるので、ダウンロードして確認してみましょう。
ダウンロードした「SimpleEKDemo.zip」を解凍してできたプロジェクトをXcodeで開きます。この SimpleEKDemoアプリケーションもベースSDKが[iOS 4.0]に指定されているため、前項と同様にベースSDKの設定を[iOS 4.2]に修正してください。
シミュレータでSimpleEKDemoを実行すると、[Events List]にBMICalcから登録したイベントが表示され、正常に保存されていることが確認できます。
カレンダーデータにアクセスするフレームワークにはEventKitの他に「EventKitUI」というものも用意されています。EventKitUIはカレンダーデータベースに関する標準画面を提供するフレームワークです。
EventKitUIに含まれる「EKEventViewContoler」クラスを利用すると、先ほどダウンロードした「SimpleEKDemo」の以下のようなイベント編集画面が簡単に作成できます。
このような画面を素早く作成したい場合にはEventKitUIフレームワークも利用するといいでしょう。
次ページでは、iAdについて説明し、iAdフレームワークを使用したバナー広告を、先ほどのBMICalcアプリに追加してみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.