Monotouch UICalendar存储事件在自定义数据库中

时间:2013-02-27 01:25:19

标签: c# iphone xamarin.ios icalendar

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

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

非常感谢任何帮助!

[编辑]

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

下面你可以看到我截取事件的确切内容,以便他们可以将我需要存储的一些自定义数据与应用程序的事件相关联。基本上,这将拦截事件并呈现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;
        }

希望这有助于其他人。