我的“ViewController”类中有以下方法,用于通过 GET API 调用填充 UITableView 中的自定义单元格。这在应用首次加载时工作正常。
//ViewController
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
loadDataInUITableViewCell()
}
func loadDataInUITableViewCell() {
apiCentral.sharedInstance.fetchData() {
result in
guard result.error == nil else {
self.handleError(result.error!)
return
}
if let fetchedData = result.value {
self.data = fetchedData
}
self.messagesTableView.reloadData()
}
}
当应用程序进入前台时,如何刷新数据?好吧,我将以下内容添加到 AppDelegate 以运行“loadDataInUITableViewCell”方法,以便重新加载数据。
//AppDelegate
let mainViewController = ViewController()
func applicationWillEnterForeground(_ application: UIApplication) {
mainViewController.loadDataInUITableViewCell()
}
问题:上述机制工作正常,但是,当应用程序进入前台时出现以下错误。
“ fatal error :在展开可选值时意外发现 nil”
问题似乎发生在“self.messagesTableView.reloadData()”代码行。我正在使用 Xcode 8.3 并在 Swift 3 中编码。任何指导将不胜感激。谢谢。
最佳答案
NotificationCenter.default.addObserver(self, selector: #selector(willEnterForeground), name: .UIApplicationWillEnterForeground, object: nil)
在 viewWillAppear() 中写上一行
func willEnterForeground() {
tableView.reloadData()
}
在有 UITableView 的 ViewController 中使用上面的代码
关于ios - 当应用程序进入前台时如何重新加载 UITableView 数据? (Xcode 8.3/swift 3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43107191/