Xamarin.iOS 如何在 FSCalendar 中添加事件
How to add event in FSCalendar in Xamarin.iOS
我正在将 FSCalendar 用于应用程序目的。 FSCalendar 演示如下。
https://github.com/MarcBruins/FSCalendar-Xamarin-iOS
我尝试在 SO 和 Google 上搜索 2 天。但是我找不到在 FSCalendar 中添加事件的方法。
如果有人使用它并帮助我了解如何在 FSCalendar 中添加事件,我会很高兴。
感谢任何帮助。
编辑:
看这张图
当我点击日期 15 时,日期 15 的事件显示在日历下方。 Hey Daily Event
处。我希望你现在明白了。
FSCalendar
中的事件是通过 DataSource
提供的,很像其他基于数据源的控件(即 UITableView
)。
此示例子类 FSCalendarDataSource
并添加了事件日期的硬编码列表(通常您会 set/retrieve 通过 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()
};
我正在将 FSCalendar 用于应用程序目的。 FSCalendar 演示如下。
https://github.com/MarcBruins/FSCalendar-Xamarin-iOS
我尝试在 SO 和 Google 上搜索 2 天。但是我找不到在 FSCalendar 中添加事件的方法。
如果有人使用它并帮助我了解如何在 FSCalendar 中添加事件,我会很高兴。
感谢任何帮助。
编辑:
看这张图
当我点击日期 15 时,日期 15 的事件显示在日历下方。 Hey Daily Event
处。我希望你现在明白了。
FSCalendar
中的事件是通过 DataSource
提供的,很像其他基于数据源的控件(即 UITableView
)。
此示例子类 FSCalendarDataSource
并添加了事件日期的硬编码列表(通常您会 set/retrieve 通过 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()
};