使用 EventKit 编辑特定事件 - Swift
Edit specific event with EventKit - Swift
我想编辑从日历中获取的一个事件。我的问题是我可以看到事件详细信息,但编辑按钮没有显示,因此用户无法编辑它。
that's what i'm talking about
这是准则的相关部分
class ViewController: UIViewController, UITextFieldDelegate, UITableViewDelegate, UITableViewDataSource, UIPickerViewDelegate, UIPickerViewDataSource, EKEventEditViewDelegate {
let eventStore = EKEventStore()
var hibakURL = [String]()
var hibasEventek = [EKEvent]()
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "segue" {
// Configure the destination event view controller
let eventViewController = segue.destination as! EKEventViewController
// Fetch the index path associated with the selected event
let indexPath = self.hibaTableView.indexPathForSelectedRow!
// Set the view controller to display the selected event
eventViewController.event = self.hibasEventek[indexPath.row]
print(indexPath.row)
// Allow event editing
eventViewController.allowsEditing = true
}
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
let numofRows = hibakURL.count
return numofRows
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = hibaTableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = hibasEventek[indexPath.row].title
cell.textLabel?.font = UIFont(name: (cell.textLabel?.font.fontName)!, size:14)
return cell
}
}
希望够了!
抱歉,如果 Post 中的某些内容不正确,但这是我第一次 post 在 SO 上。
问题已解决,我尝试使用 eventIdentifier 而不是存储的事件并且成功了。
class ViewController: UIViewController, UITextFieldDelegate, UITableViewDelegate, UITableViewDataSource, UIPickerViewDelegate, UIPickerViewDataSource, EKEventEditViewDelegate {
let eventStore = EKEventStore()
var hibakURL = [String]()
var hibasEventek = [String]() // <-- To Store eventIdentifier
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "segue" {
// Configure the destination event view controller
let eventViewController = segue.destination as! EKEventViewController
// Fetch the index path associated with the selected event
let indexPath = self.hibaTableView.indexPathForSelectedRow!
// Set the view controller to display the selected event
eventViewController.event = eventStore.event(withIdentifier: hibasEventek[indexPath.row])! //it fetches now that specific event from the eventStore instead of a copied event
print(indexPath.row)
// Allow event editing
eventViewController.allowsEditing = true
}
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
let numofRows = hibakURL.count
return numofRows
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = hibaTableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = hibasEventek[indexPath.row].title
cell.textLabel?.font = UIFont(name: (cell.textLabel?.font.fontName)!, size:14)
return cell
}
}
感谢您的帮助!祝你有美好的一天
我想编辑从日历中获取的一个事件。我的问题是我可以看到事件详细信息,但编辑按钮没有显示,因此用户无法编辑它。
that's what i'm talking about
这是准则的相关部分
class ViewController: UIViewController, UITextFieldDelegate, UITableViewDelegate, UITableViewDataSource, UIPickerViewDelegate, UIPickerViewDataSource, EKEventEditViewDelegate {
let eventStore = EKEventStore()
var hibakURL = [String]()
var hibasEventek = [EKEvent]()
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "segue" {
// Configure the destination event view controller
let eventViewController = segue.destination as! EKEventViewController
// Fetch the index path associated with the selected event
let indexPath = self.hibaTableView.indexPathForSelectedRow!
// Set the view controller to display the selected event
eventViewController.event = self.hibasEventek[indexPath.row]
print(indexPath.row)
// Allow event editing
eventViewController.allowsEditing = true
}
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
let numofRows = hibakURL.count
return numofRows
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = hibaTableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = hibasEventek[indexPath.row].title
cell.textLabel?.font = UIFont(name: (cell.textLabel?.font.fontName)!, size:14)
return cell
}
}
希望够了!
抱歉,如果 Post 中的某些内容不正确,但这是我第一次 post 在 SO 上。
问题已解决,我尝试使用 eventIdentifier 而不是存储的事件并且成功了。
class ViewController: UIViewController, UITextFieldDelegate, UITableViewDelegate, UITableViewDataSource, UIPickerViewDelegate, UIPickerViewDataSource, EKEventEditViewDelegate {
let eventStore = EKEventStore()
var hibakURL = [String]()
var hibasEventek = [String]() // <-- To Store eventIdentifier
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "segue" {
// Configure the destination event view controller
let eventViewController = segue.destination as! EKEventViewController
// Fetch the index path associated with the selected event
let indexPath = self.hibaTableView.indexPathForSelectedRow!
// Set the view controller to display the selected event
eventViewController.event = eventStore.event(withIdentifier: hibasEventek[indexPath.row])! //it fetches now that specific event from the eventStore instead of a copied event
print(indexPath.row)
// Allow event editing
eventViewController.allowsEditing = true
}
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
let numofRows = hibakURL.count
return numofRows
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = hibaTableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = hibasEventek[indexPath.row].title
cell.textLabel?.font = UIFont(name: (cell.textLabel?.font.fontName)!, size:14)
return cell
}
}
感谢您的帮助!祝你有美好的一天