Kal カレンダーをアプリに正常に統合しました。カレンダーを表示する方法は次のとおりです。
-(void)showDepartDatePicker{
NSLog(@"showDepartDatePicker");
if(_departDatePicker != nil){
[self.navigationController pushViewController:_departDatePicker animated:YES];
}else{
_departDatePicker = [[KalViewController alloc] init];
_departDatePicker.title = @"Departure Date";
_departDatePicker.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Today" style:UIBarButtonItemStyleBordered target:self action:@selector(showAndSelectTodayDeparturePicker)];
_departDatePicker.kvcDelegate = self;
[self.navigationController pushViewController:_departDatePicker animated:YES];
}
}
KalViewController.h に以下を追加しました。
@protocol KalViewControllerDelegate <NSObject>
@required
- (void)didSelectDate:(KalDate *)date andLoaded:(BOOL)loaded;
@end
と
@property (nonatomic, assign) id <KalViewControllerDelegate> kvcDelegate;
このデリゲートメソッドをviewControllerに次のように実装しました
- (void)didSelectDate:(KalDate *)date andLoaded:(BOOL)loaded
{
NSLog(@"Title : %@",[self.navigationController.visibleViewController title]);
[self.navigationController popViewControllerAnimated:YES];
}
今、私の質問によると、イベントでマークされた日を表示し、それを選択すると、月のビューの下にあるテーブルビューにイベントの詳細が表示されるように、KalDataSource を実装したいと考えています。
Kal カレンダーを初めて使用する場合は、このリンクを参照してくださいhttps://github.com/klazuka/Kal
2 番目の質問です。KalViewController.m からデリゲート メソッドを呼び出す方法は次のとおりです。
- (void)didSelectDate:(KalDate *)date
{
self.selectedDate = [date NSDate];
NSDate *from = [[date NSDate] cc_dateByMovingToBeginningOfDay];
NSDate *to = [[date NSDate] cc_dateByMovingToEndOfDay];
[self clearTable];
[dataSource loadItemsFromDate:from toDate:to];
[tableView reloadData];
[tableView flashScrollIndicators];
//line below calls my delegate method
[self.kvcDelegate didSelectDate:date andLoaded:_loaded];
}
何が起こるかというと、showDepartDatePicker を呼び出して KalViewController をナビゲーション スタックにプッシュすると、デリゲート メソッドが 2 回呼び出され (日付選択時に呼び出される必要があります)、日付選択ごとにそのデリゲート メソッドが再度呼び出されます (1 回)。
このカレンダーに過去の日付が表示されないように制限したいのです。これについて私を助けてください。