2

我正在使用https://github.com/Clancey/UICalendar

我想将它添加为一行的事件存储在我的自定义数据库表中。但是,我目前没有看到 UICalendar 库实际上公开了任何事件来执行此操作。将使用 UICalendar 添加的事件存储到自定义数据库中的最佳方法是什么?或者至少可以参加活动?

非常感谢任何帮助!

[编辑]

看起来我需要用来EKEvent查找当前保存的值。我如何从当前被触发的事件中获取值以从我的应用程序中保存?

4

2 回答 2

1

似乎 UICalendar 只是视觉组件。您应该通过自己的代码处理存储/加载事件。例如,通过 SQLite-net ORM 库 ( http://code.google.com/p/sqlite-net/ )。

如果您想使用 UICalendar 在系统日历中显示/编辑事件,请使用EKEvent和其他EventKit框架类来获取该信息。

于 2013-02-27T10:24:32.260 回答
1

我实际上将 UICalendar 项目导入到我的项目中,并对CalendarViews.csline进行了更改,258这就是有趣的开始。

下面您可以确切地看到我为拦截事件所做的工作,以便他们可以将我需要存储的一些自定义数据与应用程序的事件关联起来。基本上这将拦截事件并呈现DVCDialogViewController处理一些额外的用户交互。从这里你可以相应地保存东西。

        private void portriatNavBar ()
        {
            //  _leftButton = new UIBarButtonItem("Calendars", UIBarButtonItemStyle.Bordered, HandlePreviousDayTouch);
            NavigationItem.LeftBarButtonItem = _orgLefButton;
            NavigationItem.Title = "Calendar";
            _rightButton = new UIBarButtonItem (UIBarButtonSystemItem.Add, delegate {
                addController = new EKEventEditViewController ();   
                // set the addController's event store to the current event store.
                addController.EventStore = Util.MyEventStore;
                addController.Event = EKEvent.FromStore(Util.MyEventStore);
                addController.Event.StartDate = DateTime.Now;
                addController.Event.EndDate = DateTime.Now.AddHours(1);

                addController.Completed += delegate(object theSender, EKEventEditEventArgs eva) {
                    switch (eva.Action)
                    {
                        case EKEventEditViewAction.Canceled :
                        case EKEventEditViewAction.Deleted :
                        case EKEventEditViewAction.Saved:
                        this.NavigationController.DismissModalViewControllerAnimated(true);

                        break;
                    }
                };

                // Going to create a precursor to actually displaying the creation of a calendar event so we can grab everything correctly
                RootElement _ctRoot = new RootElement ("Task Details") {
                    new Section () {
                        new RootElement ("Clients") {
                            AppSpecificNamespace.TaskController.GetClientsForCalendar ()
                        },
                        new RootElement ("Task Types") {
                            AppSpecificNamespace.TaskController.GetTypesForCalendar ()
                        }
                    },
                    new Section () {
                        new StyledStringElement ("Continue", delegate {
                            this.NavigationController.PopViewControllerAnimated (true);
                            this.NavigationController.PresentModalViewController (addController, true);
                        }) { Alignment = UITextAlignment.Center, TextColor = UIColor.Blue }
                    }
                };
                DialogViewController AppSpecificDVC = new DialogViewController (_ctRoot);
                this.NavigationController.PushViewController (AppSpecificDVC, true);
                //this.NavigationController.PresentViewController (AppSpecificDVC, true, null);
            });

            NavigationItem.RightBarButtonItem = _rightButton;
        }

希望这对其他人有帮助。

于 2013-03-01T00:32:28.527 回答