【发布时间】:2015-12-06 05:21:29
【问题描述】:
所以我正在构建一个笔记应用程序并尝试了所有方法但无法解决这个问题。我有 3 个UIViewController。当您单击第一个UIViewController 上的按钮时,它会将您转到第三个,其中包含UITextView、UITextField 和静态UILabel,其中会更新一些信息。当您填写这些字段并点击返回按钮时,它会将您带到第二个视图控制器,这是一个使用此信息更新的表格。
问题是:当我点击 UITableViewCell 时,它会将信息加载回第三个视图控制器,以便用户可以编辑他的笔记,但是当我回到 UITableView 时,它会创建一个全新的单元格,而不仅仅是更新旧的。
如果我可以使用我发回以供用户编辑的相同对象来更新我的数组,我认为这个问题会得到解决,但我不知道该怎么做。感谢您的帮助!
VC2 - 这就是我将数据从 tableView 发送到 textView Back 的方式
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let nextView = segue.destinationViewController as! TextViewController
guard let indexPath = self.tableView.indexPathForSelectedRow else {
print("Didnt work")
return
}
let dataToSendBackToBeEdited = textViewObjectData[indexPath.row]
print(dataToSendBackToBeEdited.dreamText)
print(dataToSendBackToBeEdited.dreamTitle)
print(dataToSendBackToBeEdited.dreamType)
print(dataToSendBackToBeEdited.description)
print(dataToSendBackToBeEdited)
nextView.objectSentFromTableViewCell = dataToSendBackToBeEdited
}
这就是我保存用户点击返回到 tableView 的信息的方式
func determineSave() {
guard var savedDreamArray = NSKeyedUnarchiver.unarchiveObjectWithFile(TextViewController.pathToArchieve.ArchiveURL.path!) as? [Dream] else {
//First dream object saved
let dreamObject = Dream(dreamTitle: titleForDream.text!, dreamType: typeOfDreamLabel.text!, dreamText: textView.text, currentDate: NSDate())
dreamArray.append(dreamObject)
NSKeyedArchiver.archiveRootObject(dreamArray, toFile: pathToArchieve.ArchiveURL.path!)
return
}
//print(savedDreamArray.count)
//print(savedDreamArray.first!.dreamTitle)
let dreamObject = Dream(dreamTitle: titleForDream.text!, dreamType: typeOfDreamLabel.text!, dreamText: textView.text!, currentDate: NSDate())
savedDreamArray.append(dreamObject)
NSKeyedArchiver.archiveRootObject(savedDreamArray, toFile: pathToArchieve.ArchiveURL.path!)
}
【问题讨论】:
-
@bobby - 当我点击返回按钮时,我正在将我的对象附加到一个数组中。当用户编辑笔记时,我只是不知道如何获取该索引和该特定对象。我理解它背后的理论,但我不能自己写。任何帮助都会很棒!
标签: ios swift nskeyedarchiver