在EKEventViewController

问题描述:

我创建一个事件的新EKEventViewController编程显示EKEventEditViewController事后在EKEventViewController

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

setViewController(ekEventViewController) 

显示它在setViewController我加入了新的控制器作为childViewController和新的控制器作为一个子视图视图。现在我想在呈现EKEventViewController之后立即调用“编辑”操作。我没有任何子类,我只想使用EKEventEditingViewController自动编辑。

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

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

ekEventViewController.perform(ekEventViewController.editButtonItem.action! 

有没有办法做到这一点没有子?我甚至考虑反思,但无法弄清楚...

在此先感谢!

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

let newNC = EKEventEditViewController() 
self.navigationController = newNC 

之后,设定newNC作为当前根UIViewControllerchildViewController并添加其观点,作为一个子视图。

一旦你创建了编辑视图控制器,你只需要呈现它。确保已经定义了你的回调,所以你作出适当的反应时,它本身驳回 - 这取决于用户采取了行动(取消,删除,添加,修改):

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

谢谢你的回答。你是对的,我没有考虑直接展示这个控制器,因为我想在编辑完成后显示通常的EKEventViewController,但这对我来说很好。 – Muli

+0

没有upvote,它帮助了我一步,但不幸的是,它不是我的问题的实际解决方案,因为我试图把它放在不是全屏的ViewController中,如果您明白的话...... – Muli

+0

当然。我提出了你的问题。很高兴你正在取得进展。这就是我们来这里的原因。 – Mozahler