2016-03-05 108 views
0

我有2個控制器:第一個顯示所有記錄在數據庫中,第二個允許添加新記錄。他們都與NavigationController連接。如果我要添加新記錄並按下「返回」按鈕,第一個控制器將不顯示新數據(因爲NavigationController,我猜)。 所以,我試着把tableView.reloadData()放在viewDidAppear()。它不會幫助。然後我試着用NSNotificationCenter(method from this thread)重新載入tableView,但它仍然沒有顯示新的數據。 這裏是我的代碼:無法重新加載TableView

func saveRecord() { 
    //Creating cloud record 
    let container = CKContainer.defaultContainer() 
    let privateDatabase = container.privateCloudDatabase 
    privateDatabase.saveRecord(cloudRecord, completionHandler: { (record, error) -> Void in 
     if (error != nil) { 
     print(error) 
     } 
     NSOperationQueue.mainQueue().addOperationWithBlock({() -> Void in 
     //creating core data record 
     do { 
      try managedContext.save() 
     } catch let error as NSError { 
      print("Could not save \(error), \(error.userInfo)") 
     } 
     NSNotificationCenter.defaultCenter().postNotificationName("reloadHistoryController", object: nil) 
     }) 
    }) 
} 

override func viewDidLoad() { 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "reloadHistoryController:", name:"reloadHistoryController", object: nil) 
} 

func reloadHistoryController(notification: NSNotification){ 
    self.tableView.reloadData() 
} 

更新

dispatch_async(dispatch_get_main_queue(),{ 
     self.tableView.reloadData() 
}) 

不幫我。

+0

函數cellForRowAtIndexPath上的斷點,以及在更新tableView時看它何時被調用。 – UlyssesR

+0

@UlyssesR它沒有調用。我可以通過通知在控制檯中打印一些東西,但它不想使用我的表格 – dsk1306

+0

您是否設置了tableview的委託? –

回答

2

請檢查您的沒有。行計數是相同的時間,即當您加載firstviewcontroller和保存新記錄後按下返回按鈕。我認爲你的數組不會用你添加的新數據初始化你的數據。請嘗試在viewWillAppear()方法中初始化您的數組數據,然後重新加載您的tableview。

+0

它幫助,非常感謝。我把我的CoreData fetchRequest代碼放在選擇器func中,現在一切看起來都不錯。 – dsk1306

+0

@ dsk1306樂意爲您效勞。 :) –