如何在 kal 日历中进行更改以显示来自 json webservice 的事件

Posted

技术标签:

【中文标题】如何在 kal 日历中进行更改以显示来自 json webservice 的事件【英文标题】:How to makes changes in kal calender to display events from json webservice 【发布时间】:2013-04-16 09:19:20 【问题描述】:

嗨,我正在创建一个 iphone 应用程序,我在其中使用日历来显示事件。为此,我在我的项目中使用了 kal calender api https://github.com/klazuka/Kal,我需要根据来自的开始日期和结束日期显示事件json webservice 所以我必须在 kal 日历项目中进行更改,以便我可以调用我的开始日期和结束日期并显示该日期的事件。请提供代码。谢谢

【问题讨论】:

【参考方案1】:

Kal git 中的 Holiday Example 是一个很好的起点。它还从 JSON 中获取事件并将其显示在 KalViewController tableView 中。

编辑: 我可以告诉你我做了什么,我必须在 Kal calenderView 中显示本地日历以及 JSON 事件

所以我没有更改 Kal 的任何实现来获取本机事件,但我确实为服务器事件添加了自己的获取方法并将两个数组组合在一起。

我是这样做的, 我使用了 nativeCal 示例,并使用了与我的 kal 数据源相同的 eventkitDatasource.m

那么,在 KalViewDelegate 协议方法中

- (void)didSelectDate:(KalDate *)date 

我发送请求以从服务器获取所选日期的事件, 在从服务器接收事件数组时,我将这些对象添加到 eventkitDatasource.m 中的数组中,并在

- (NSArray *)eventsFrom:(NSDate *)fromDate to:(NSDate *)toDate

从本地日历和服务器事件中返回事件。

这是我的方法实现

- (NSArray *)eventsFrom:(NSDate *)fromDate to:(NSDate *)toDate

NSMutableArray *matches = [NSMutableArray array];
for (Meeting *meeting in events)

    if (IsDateBetweenInclusive(meeting.startDate, fromDate, toDate))
        [matches addObject:meeting];
    

if([arrServerEvents count]>0)
    [matches addObjectsFromArray:arrServerEvents];


return matches;

您还可以看到,我在这里创建了一个公共会议类,它具有 Ekevent 和我的服务器事件的属性。在

中将 EKEvents 更改为我的公共类对象
- (void)presentingDatesFrom:(NSDate *)fromDate to:(NSDate *)toDate delegate:(id<KalDataSourceCallbacks>)delegate

methood,然后将这些对象添加到 eventkitDatasource.m 的原生事件数组中。

希望我足够清楚。

【讨论】:

我在问如何在 kal 日历中更改数据源方法中的代码

以上是关于如何在 kal 日历中进行更改以显示来自 json webservice 的事件的主要内容,如果未能解决你的问题,请参考以下文章

(kal) 日历/tableview 视图层次结构在标签栏中中断

ipad 的 kal 日历的 UI 问题?

无法在应用程序中显示 Kal UI

添加 Kal 日历作为标签栏项目的根控制器,不使用导航控制器

应用内的日历视图

Calendar Kal:如何动态刷新 tableview?