iOS - 如何在Objective C中向kal库添加事件?

Min*_*wzy 5 xcode calendar objective-c ios kal

我在项目需要日历视图中处理事件,我尝试了很多库,但最后我决定使用kal库,因为它有能力添加事件

Calendar.h

#import "Kal.h"
#import "NSDate+Convenience.h"
#import "EventKitDataSource.h"


@interface Calendar : UIViewController<WebService_Delegate , UITableViewDelegate >
{


    KalViewController *kal;
    id dataSource;
}
Run Code Online (Sandbox Code Playgroud)

Calendar.m

- (void)viewDidLoad
{
    [super viewDidLoad];



    self.title = @"Caledar";
    kal = [[KalViewController alloc]initWithSelectionMode:KalSelectionModeSingle];
    kal.selectedDate = [NSDate dateStartOfDay:[NSDate date]];
     kal.delegate = self;


    kal.view.frame = CGRectMake(0, 65, kal.view.frame.size.width, kal.view.frame.size.height);

    [kal showAndSelectDate:[NSDate date]];
    //navController = [[UINavigationController alloc]initWithRootViewController:kal];
   // [self.view addSubview:navController.view];
    [self initVariable];
    [self getEvents];


    dataSource = [[EventKitDataSource alloc] init];
    kal.dataSource = dataSource;



   [self.view addSubview:kal.view];

}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    // Display a details screen for the selected event/row.
    EKEventViewController *vc = [[EKEventViewController alloc] init];

    vc.event = [dataSource eventAtIndexPath:indexPath];

    //[vc setEvent:[events_array objectAtIndex:indexPath.row]];
    vc.allowsEditing = NO;
    [navController pushViewController:vc animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

如何将数据传递给dataSource以显示它

这里看起来如何

在此输入图像描述

我需要将事件列表设置到我的事件列表中,我将事件重复,从我的日历中读取

谢谢

Nic*_*son 1

您需要在一个对象中实现 KalDataSource 协议,并将该对象设置为 kal 对象的数据源。该协议可以在这里找到https://github.com/klazuka/Kal/blob/master/src/KalDataSource.h

将 KalDataSource 协议添加到头文件 <WebService_Delegate , UITableViewDelegate, KalDataSource>

在 Calendar 对象的 init 方法中设置 kal.datasource = self

在您的对象中实现 KalDataSource 方法