以编程方式在EKEventViewController中显示EKEventEditViewController

时间:2017-08-01 14:04:00

标签: swift eventkit ekeventkit

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

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

 setViewController(ekEventViewController)

setViewController中,我将新控制器添加为childViewController,将新控制器视图添加为子视图。现在我想打电话给#34; EDIT"演示EKEventViewController后立即执行操作。我没有任何子类,我只想使用EKEventEditingViewController自动编辑。

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

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

ekEventViewController.perform(ekEventViewController.editButtonItem.action!

有没有办法在没有子类化的情况下完成这项工作?我甚至在考虑反思,但无法弄清楚......

提前致谢!

2 个答案:

答案 0 :(得分:1)

创建编辑视图控制器后,您只需要显示它。确保你已经定义了你的回调,这样当你自己解散时你会做出适当的反应 - 取决于用户采取的行动(取消,删除,添加,修改):

   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)
    }

答案 1 :(得分:0)

解决方案是将新创建的EKEventEditViewController设置为我所需的ViewController的现有UINavigationViewController,因为EKEventEditViewController本身是UINavigationController类型。

let newNC = EKEventEditViewController()
self.navigationController = newNC

然后,将newNC设置为当前根childViewController的{​​{1}},并将其视图添加为子视图。