我在我的应用程序集成卡尔日历成功,这里是我的方法如何表现日历KAL日历,如何实现KalDataSource,以便我可以显示iOS内置日历应用程序中的事件?
-(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,以便显示标记事件的日期并选择它在月视图下方的表视图中显示事件详细信息。
如果你是新的卡尔日历https://github.com/klazuka/Kal
第二个问题,请参考此链接,这里是我如何调用从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次)。
即使我想限制此日历不显示过去的日期! 请帮我解决这个问题。