使用 UIApplicationDidEnterForeground 更新表视图 swift

update tableview swift with UIApplicationDidEnterForeground

我很难使以下代码正常工作。我想在应用程序唤醒时更新 table 列表。我确认数据已更新,因为当我滚动 table 视图时,它会更新。任何帮助,将不胜感激。我确实在控制台中得到 "attempting reload" 和 "reloading"。

viewdidload() 中的代码:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "reloadList:", name: UIApplicationDidBecomeActiveNotification, object:nil)

函数中的代码:

func reloadList(notification: NSNotification) {
    println("attempting reloading")

        if (self.tableMain != nil) {
            println("reloading")
            self.tableMain.reloadData()

        }  
}

您可以在 viewWillAppear(animated: Bool) 方法中更新您的 table 列表。每次您的视图即将出现在屏幕上时都会调用此方法。

示例代码:

override func viewWillAppear(animated: Bool) {
      super.viewWillAppear(animated)
      // Do you update here
      self.tableView.reloadData()  
  }

如果你想在你的应用进入前台时更新,你可以这样做:

在您的 viewController 的 viewDdiLoad() 方法中

   NSNotificationCenter.defaultCenter().addObserver(self, selector: "reloadList:", name: "reloadList", object: nil)

在你的 appDelegate 中

 func applicationWillEnterForeground(application: UIApplication) {
     NSNotificationCenter.defaultCenter().postNotificationName("reloadList", object: nil)
 }

此代码在 objective c 中,您可以更改 swift 的语法。

在您的 viewWillAppear 函数中添加这一行

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadData) name:UIApplicationDidBecomeActiveNotification object:nil];

并且在 viewWillDisappear

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];