Я создаю приложение напоминания, когда меняю налево, я могу удалить и обновить напоминание; когда я нажимаю на кнопку edit
, как показано ниже, он предположительно загружает данные из базы данных, поэтому я могу редактировать и обновлять данные, но вместо этого он просто работает, как создание нового reminder
.Как я могу загрузить данные из базы данных с помощью действий строки в swift
и как изменить размеры строк.
ReminderTable.swift
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
let deleteAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Delete",handler: { (action, indexPath) -> Void in
if let managedObjectContext = (UIApplication.sharedApplication().delegate as? AppDelegate)?.managedObjectContext {
let reminderToDelete = self.fetchResultController.objectAtIndexPath(indexPath) as! ReminderData
managedObjectContext.deleteObject(reminderToDelete)
do {
try managedObjectContext.save()
} catch {
print(error)
}
}
})
let editAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Edit",handler: { (action, indexPath) -> Void in
let st:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc :UINavigationController = st.instantiateViewControllerWithIdentifier("Reminder") as! UINavigationController
self.presentViewController(vc, animated: true, completion: nil)
})
deleteAction.backgroundColor = UIColor.redColor()
editAction.backgroundColor = UIColor.blueColor()
return [deleteAction,editAction]
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "Reminder" {
let task = segue.destinationViewController as! Reminder
let indexpath = self.tableView.indexPathForSelectedRow
let row = indexpath?.row
task.reminders = reminders[row!]
}
}
Reminder.swift
override func viewDidLoad() {
super.viewDidLoad()
dateTextField.delegate = self
nameTextField.delegate = self
if let reminderContent = reminders
{
nameTextField.text = reminderContent.name
dateTextField.text = reminderContent.stringForDate()
timePick.date = reminderContent.time!
}
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
dateFormatter.stringFromDate(reminderContent.date!)
let timeFormatter = NSDateFormatter()
timeFormatter.dateFormat = "hh:mma"
timeFormatter.stringFromDate(reminderContent.time!)
}
func inserte(){
let storingName = nameTextField.text
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
let date = dateFormatter.dateFromString(dateTextField.text!)
if reminders == nil {
if let managedObjectContext = (UIApplication.sharedApplication().delegate as? AppDelegate)?.managedObjectContext {
reminders = NSEntityDescription.insertNewObjectForEntityForName("Reminder", inManagedObjectContext: managedObjectContext) as? ReminderData
reminders!.name = storingName!
reminders.date = date
reminders.time = timePick.date
do {
try managedObjectContext.save()
} catch {
print(error)
return
}
}
}
}
обратите внимание, что я до сих пор своего рода новичок в развитии IOS
заранее спасибо
Я обновил свое сообщение выше на ** Reminder.swift **, кроме того, что мое приложение работает нормально, нажав на ячейку, данные просто загружены без проблем; но в результате действия строки он просто создает новое напоминание – User
Где находится ваш код для сохранения изменений? – Scriptable
посмотрите на ** Reminder.swift **, я снова обновил код, я считаю, что ошибка в ** ReminderTable.swift ** – User