以编程方式在 EKEventViewController 中显示 EKEventEditViewController

Programmatically show EKEventEditViewController in EKEventViewController

我正在创建一个带有事件的新 EKEventViewController 并在之后显示它

 let ekEventViewController = EKEventViewController(nibName: nil, bundle: nil)
 ekEventViewController.delegate = self
 ekEventViewController.allowsEditing = true
 ekEventViewController.event = event

 setViewController(ekEventViewController)

setViewController 中,我将新控制器添加为 childViewController 并将新控制器的视图添加为子视图。现在我想在呈现 EKEventViewController 后立即调用 "EDIT" 操作。我没有继承任何东西,我只是想使用 EKEventEditingViewController.

自动编辑

到目前为止,我已经尝试了几种与"editing"相关的方法。

我也尝试调用 editButtonItemSelector,但没有成功...

ekEventViewController.perform(ekEventViewController.editButtonItem.action!

有没有不用子类化就可以做到的方法?我什至想过反思,但想不通...

提前致谢!

一旦你创建了编辑视图控制器,你只需要展示它。确保您已经定义了回调,以便在它自行消失时做出适当的反应 - 取决于用户采取的操作(取消、删除、添加、修改):

   override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

        let sourceArray = originalEventsList

        let eventViewController: EKEventEditViewController = EKEventEditViewController()
        eventViewController.event = sourceArray[indexPath.row]
        eventViewController.eventStore = self.eventStore
        eventViewController.editViewDelegate = self
        self.presentViewController(eventViewController, animated:true, completion:nil)
    }

解决方案是将新创建的 EKEventEditViewController 设置为我想要的 ViewController 的现有 UINavigationViewController,因为 EKEventEditViewController 本身就是 UINavigationController 类型.

let newNC = EKEventEditViewController()
self.navigationController = newNC

然后,将 newNC 设置为当前根 UIViewControllerchildViewController 并将其视图添加为子视图。