我在更新聯繫人數據時遇到問題。查看1號主視圖與tableView我有聯繫人列表。從列表中點擊某個人後,我有下一個tableView(查看no.2 [從視圖1推到視圖2])與細節和編輯按鈕。接下來,如果我按編輯我有模態視圖no3與編輯輸入時,我可以更改名稱。保存之後,我怎麼能刷新更新一些數據後如何刷新應用程序中的數據?
- 稱號的tableView導航欄
- 稱號後退按鈕
- 主要的tableView在廠景
我用在我看來NO1
let managedObjectContext: NSManagedObjectContext? = (UIApplication.sharedApplication().delegate as? AppDelegate)?.managedObjectContext
var fetchedResultsController: NSFetchedResultsController?
override func viewDidLoad() {
super.viewDidLoad()
self.configureView()
fetchedResultsController = NSFetchedResultsController(fetchRequest: CLInstance.allContactsFetchRequest(), managedObjectContext: managedObjectContext!, sectionNameKeyPath: nil, cacheName: nil)
fetchedResultsController?.delegate = self
do { try fetchedResultsController?.performFetch() } catch _ {}
tableView.reloadData()
}
func controllerWillChangeContent(controller: NSFetchedResultsController) {
tableView.beginUpdates()
}
func controllerDidChangeContent(controller: NSFetchedResultsController) {
tableView.endUpdates()
}
func controller(
controller: NSFetchedResultsController,
didChangeObject anObject: AnyObject,
atIndexPath indexPath: NSIndexPath?,
forChangeType type: NSFetchedResultsChangeType,
newIndexPath: NSIndexPath?) {
switch type {
case .Insert:
tableView.insertRowsAtIndexPaths(NSArray(object: newIndexPath!) as! [NSIndexPath], withRowAnimation: .Fade)
break
case .Delete:
tableView.deleteRowsAtIndexPaths(NSArray(object: indexPath!) as! [NSIndexPath], withRowAnimation: .Fade)
break
case .Move:
print("move")
//tableView.moveRowAtIndexPath(indexPath!, toIndexPath: newIndexPath!)
break
case .Update:
print("update")
tableView.cellForRowAtIndexPath(indexPath!)
break
}
}
我預計當我保存此代碼中的數據NSFetchedResultsController
進行更新,但在我的日誌文件我看到打印出「移動」而不是「更新E「如何以其他方式做到這一點?
謝謝,我添加的表格重新加載'viewDidAppear',現在是確定的。但我不知道如何創建Outlet上的backbitten – Wraith
backbitten?創建一個插座很容易。最簡單的方法是確保您在助理編輯器中(在編輯器中顯示兩個窗格)。在左側窗格中,選擇Storyboard View,在右側的ViewController的代碼中。然後對於每個UI元素(例如標籤),您需要控制Outlet,將其從左窗格(情節提要)拖到右窗格(代碼)。將出現一個彈出對話框,您可以在其中輸入數據 – Glenn
BackButton抱歉 – Wraith