gpt4 book ai didi

ios - 在另一个类的一个 ViewController 的 TableView 上调用 reloadData 的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-28 08:35:33 25 4
gpt4 key购买 nike

我有一个 Parser 类(它使用 NSXMLParser 及其委托(delegate)方法解析 XML 数据)和一个 TableViewController(显示 XML 数据)。在解析器类中,我使用以下代码检索 XML 数据:

let task = NSURLSession.sharedSession().dataTaskWithURL(url) { data, response, error in
guard error == nil else {
print(error)
return
}

guard let data = data else {
print("Data not received")
return
}

let parser = NSXMLParser(data: data)
parser.delegate = self
parser.parse()
}
task.resume()

解析数据后,我创建了一个对象列表,TableViewController 将使用这些对象来填充其 TableView 的单元格。然后,解析器类必须告诉 TableViewController 重新加载其 TableView 中的数据。我通过在我的 TableViewController 中添加以下代码来做到这一点:

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(EventsTableViewController.reloadData), name: "reloadData", object: nil)

func reloadData(notification: NSNotification) {
if notification.name == "reloadData" {
events = eventParser.events
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
self.activityIndicator.stopAnimating()
}
addLocalNotifications()
}
}

我还在上面的 dataTaskWithURL(url) 完成处理程序的末尾将这段代码添加到我的解析器类中:

NSNotificationCenter.defaultCenter().postNotificationName("reloadData", object: self)

这行得通并且重新加载了数据,但我想问一下,这是正确的方法吗?有没有更好的办法?

提前致谢!

最佳答案

使用委托(delegate)是从另一个 Controller 重新加载表的正确方法。

关于ios - 在另一个类的一个 ViewController 的 TableView 上调用 reloadData 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37860147/

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