如何在 Xamarin.iOS 的 FSCalendar 中添加事件

Posted

技术标签:

【中文标题】如何在 Xamarin.iOS 的 FSCalendar 中添加事件【英文标题】:How to add event in FSCalendar in Xamarin.iOS 【发布时间】:2017-11-08 05:44:11 【问题描述】:

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

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

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

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

感谢任何帮助。

编辑:

看这张图片

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

【问题讨论】:

【参考方案1】:

FSCalendar 中的事件通过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()
;

【讨论】:

@SushilHangover 感谢绑定工作正常,但我想按日历显示下面的事件,以便我可以看到这个特定日期我有这个事件。 @Ironman 我的示例中的 FSCalendarDataSource 将 5 个事件添加到日历中,它们将由当天日期下方的一个点表示。 日期下的一个点很好。但是当我单击那个点时,我想在我的 tableview 绑定下方显示事件。所以我可以知道我的这个日期我有这个事件。查看我的编辑。 @Ironman 这与你问的问题不同,FSCalendarDelegate 处理像DidSelectDate 这样的函数

以上是关于如何在 Xamarin.iOS 的 FSCalendar 中添加事件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 xamarin.ios 中的页面之间进行导航?

如何在 Xamarin(iOS) 中将按钮从右向左移动

如何使用 AppStoreReceiptUrl 在 Xamarin.iOS 中验证 StoreKit 交易

如何在 Xamarin.iOS 中使用 FCM(Firebase 云消息传递)发送 iOS 推送通知

Xamarin.iOS:如何将 NavigationBar 添加到视图

如何设计一个高级的 UIScrollView Xamarin.ios?