ios - 当应用程序进入前台时如何重新加载 UITableView 数据? (Xcode 8.3/swift 3)

标签 ios swift uitableview swift3

我的“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/

相关文章:

ios - 此处 map 中未获得当前位置

ios - AVPlayer 有时无法播放视频

swift - Root View Controller 和展开 segues?

iphone - UITableView索引滚动问题

iphone - 如何使用 NSURLConnection 取消持久连接?

ios - 如何使用 AFNetworking 检查主机(服务器)在 iOS 中是否可用

ios - swift ; scrollView 搭配 tableView 可行吗?

ios - 更改单个单元格 UITableView 的高度

ios - 我应该将数据存储在我的自定义 UITableView 中吗?

ios - 按日期对 Firebase 数据排序