gpt4 book ai didi

ios - 通知 TableView 重新加载数据

转载 作者:可可西里 更新时间:2023-11-01 00:17:00 26 4
gpt4 key购买 nike

我有这个 TableView Controller :

class EventListViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UIPickerViewDelegate, UIPickerViewDataSource {

// Event table view
@IBOutlet weak var eventTableView: UITableView!

var events: [Event] = []
...

我想从 Web 服务异步加载数据,这最多需要 5 秒。

我有这个异步代码:

override func viewDidLoad() {
super.viewDidLoad()
...
// ApiClient is a custom wrapper for my API
ApiClient.sharedInstance.getEvents({
(error: NSError?, events: [Event]) in

// All this runs within an asynchronous thread

if let error = error {
println("Error fetching events")
println(error.localizedDescription)
}

self.events = events
// How to notify the table view?
})
...

数据加载正常,但表格仍为空。再次调用 viewWillAppear(...) 后,数据就在表中。

我需要通知 TableView 吗?什么是最干净的方法/最佳实践?

谢谢!

最佳答案

只需调用 self.eventTableView.reloadData()

如果闭包中的代码是在异步线程上执行的,则可能需要将该调用封装到 dispatch_async 调用中,以便它在主线程上触发(因为所有与 UI 相关的工作必须始终在主线程中运行):

// All this runs within an asynchronous thread
...
self.events = events

// Notify the tableView to reload its data.
// We ensure to execute that on the main queue/thread
dispatch_async(dispatch_get_main_queue()) {
self.eventTableView.reloadData()
}

关于ios - 通知 TableView 重新加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27882039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com