无法重新加载TableView

时间:2016-03-05 10:43:14

标签: ios swift uitableview cloudkit

我有2个控制器:第一个显示db中的所有记录,第二个允许添加新记录。它们都与NavigationController相连。如果我要添加新记录并按"返回"按钮,第一个控制器不会显示新数据(因为我猜的是NavigationController)。 所以,我已经尝试将tableView.reloadData()放入viewDidAppear()。它没有帮助。然后我尝试使用NSNotificationCenter(method from this thread)重新加载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()
})

对我也没有帮助。

1 个答案:

答案 0 :(得分:2)

请检查你的号码。行计数在两个时间都相同,即加载firstviewcontroller时和保存新记录后按回按钮。我认为保存数据的数组未使用您添加的新数据进行初始化。请尝试在viewWillAppear()方法中初始化数组数据,然后重新加载tableview。