2017-08-01 51 views
1

我創建一個事件的新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! 

有沒有辦法做到這一點沒有子?我甚至考慮反思,但無法弄清楚...

在此先感謝!

回答

0

的解決辦法是設置新創建EKEventEditViewController爲我現有的UINavigationViewController我所需的ViewController,因爲EKEventEditViewController類型UINavigationController本身。

let newNC = EKEventEditViewController() 
self.navigationController = newNC 

之後,設定newNC作爲當前根UIViewControllerchildViewController並添加其觀點,作爲一個子視圖。

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

謝謝你的回答。你是對的,我沒有考慮直接展示這個控制器,因爲我想在編輯完成後顯示通常的EKEventViewController,但這對我來說很好。 – Muli

+0

沒有upvote,它幫助了我一步,但不幸的是,它不是我的問題的實際解決方案,因爲我試圖把它放在不是全屏的ViewController中,如果您明白的話...... – Muli

+0

當然。我提出了你的問題。很高興你正在取得進展。這就是我們來這裏的原因。 – Mozahler