1

我将 FSCalendar 用于应用程序目的。FSCalendar 演示如下。

https://github.com/MarcBruins/FSCalendar-Xamarin-iOS

我尝试从 2 天开始在 SO 和 Google 上进行搜索。但我找不到如何在 FSCalendar 中添加事件的方法。

如果有人使用它并帮助我如何在 FSCalendar 中添加事件,我会很高兴。

感谢任何帮助。

编辑 :

在此处输入图像描述

看这张图片

当我单击日期 15 时,日期 15 的事件显示在日历下方。 Hey Daily Event地方。我希望你现在明白了。

4

1 回答 1

4

中的事件FSCalendar是通过 a 提供的DataSource,很像其他基于数据源的控件(即UITableView)。

此示例子类FSCalendarDataSource并添加了事件日期的硬编码列表(通常您将通过 SQLite、Realm 等设置/检索这些日期...)

public class CalendarDataSource : FSCalendarDataSource
{
    NSCalendarUnit calenderUnits = NSCalendarUnit.Year | NSCalendarUnit.Month | NSCalendarUnit.Day;
    NSCalendar calendar = new NSCalendar(NSCalendarType.Gregorian);
    List<NSDate> events;

    public CalendarDataSource()
    {
        events = new List<NSDate>();
        events.Add(NSDate.Now);
        events.Add(calendar.DateByAddingUnit(NSCalendarUnit.Day, 3, NSDate.Now, NSCalendarOptions.None));
        events.Add(calendar.DateByAddingUnit(NSCalendarUnit.Day, 5, NSDate.Now, NSCalendarOptions.None));
        events.Add(calendar.DateByAddingUnit(NSCalendarUnit.Day, 7, NSDate.Now, NSCalendarOptions.None));
        events.Add(calendar.DateByAddingUnit(NSCalendarUnit.Day, 9, NSDate.Now, NSCalendarOptions.None));
    }

    bool SameDate(NSDate date1, NSDate date2)
    {
        return NSComparisonResult.Same == calendar.CompareDate(date1, date2, calenderUnits);
    }

    [Export("calendar:hasEventForDate:")]
    public override bool HasEventForDate(FSCalendar calendar, NSDate date)
    {
        return events.Any((NSDate eventDate) => (SameDate(eventDate, date)));
    }

    public override nint NumberOfEventsForDate(FSCalendar calendar, NSDate date)
    {
        return events.Any((NSDate eventDate) => (SameDate(eventDate, date))) ? 1 : 0;
    }
}

然后实例化数据源并将其分配给您的日历实例:

calender = new FSCalendar
{
    Frame = View.Frame,
    DataSource = new CalendarDataSource()
};
于 2017-11-08T07:41:52.773 回答