【发布时间】:2016-01-25 02:54:42
【问题描述】:
我还有一个带有 UITableView、Core Data 和 NSFetchedResultsController 的应用程序。我已将数据传递给 DetailViewController。我可以从 DetailViewController 中删除它们!在 Apple 的 iOS Notes 应用程序中,您可以看到我想要的功能!当您从 DetailViewController 中删除笔记时(例如),对象已删除,Notes 应用程序会自动显示下一个或上一个笔记!我想创建这样的功能。删除当前对象后如何更新用户界面?这是我的代码!谢谢` 导入 UIKit 导入核心数据
类 DetailViewController: UIViewController {
@IBOutlet weak var containerLabel: UILabel!
var retrieveData:NSManagedObject!
var managedObjectContext:NSManagedObjectContext!
var manager:Manager!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.containerLabel.userInteractionEnabled = false
self.containerLabel.textColor = UIColor.redColor()
self.containerLabel.alpha = 0
UIView.animateWithDuration(2.5) { () -> Void in
self.containerLabel.alpha = 1
}
if let demo = self.retrieveData.valueForKey("titleField") as? String {
self.containerLabel.text = demo
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func backToMain(sender: AnyObject) {
// Back to the MainTableViewController
self.dismissViewControllerAnimated(true, completion: nil)
}
@IBAction func trashButton(sender: AnyObject) {
self.managedObjectContext.deleteObject(retrieveData)
do {
try self.managedObjectContext.save()
} catch {
}
self.dismissViewControllerAnimated(true, completion: nil)
}
`
如果我在列表中有 5 个项目,如下所示:
当我从列表中选择第四项时(例如)。 detailVC 会像这样向我显示选定的项目:
我想删除它们。当我删除“四”然后我的containerLabel.text 显示列表中的先前对象时。他们在“四”被删除之后,“三”、“二”和“一”也是如此。删除“一”后,我的containerLabel.text 显示字符串
但我留下了一个名为“五”的对象
我的问题是“五”!我不能删除它。示例:在 iOS Notes 应用程序中,如果您的列表中有五个对象,例如我的演示应用程序。当您从列表中选择第四个对象时(例如 )。并开始删除它们,在“四”被删除后 iOS Notes App 显示“五”。并且“五”(列表中的最后一个对象)被删除,然后 iOS Notes App 显示“三”、“二”和“一”。也许问题线在这里:
if index != 0 {
self.retrieveData = fetchedObject[index! - 1]
} else {
self.retrieveData == fetchedObject[0]
}
【问题讨论】:
标签: swift uitableview core-data nsfetchedresultscontroller