目前我有 3 个 swift 文件:ManualViewController、AutoViewController、Main
ManualViewController 是带有表格 View 的 UIViewController。 AutoViewController 是一个带有几个按钮的 UIViewController。 Main 只是一个包含 TableView 所有数据的 swift 文件。
ManualViewController 和 AutoViewController 是使用 TabBarController 控制的。
当我运行应用程序时,在 Main.swift 中找到的初始内容被加载到 TableView 中。当我转到下一个 View 即 AutoViewController 并单击按钮更改 Main.swift 中的数据时,数据会发生变化。问题是当我切换回 ManualViewController 时,表格仍然包含旧数据而不是更新的数据。
我也试过这个:
override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(false)
self.tableView.reloadData()
}
还是不行。
最佳答案
您可以使用 NSNotificationCenter
从另一个 View 更新您的 tableView
。
你的 -addObserver:
声明在你的 tableView
Controller 中的 viewDidLoad
方法中必须是这样的:
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "refreshTable:", name: "refresh", object: nil)
}
你的这个 addObserver
函数将像:
func refreshTable(notification: NSNotification) {
println("Received Notification")
self.tableView.reloadData()
}
现在,当您导航到您的 tableView
Controller 时,您可以像这样发布通知:
NSNotificationCenter.defaultCenter().postNotificationName("refresh", object: nil, userInfo: nil)
检查 THIS示例项目以获取更多信息。
希望对您有所帮助。
关于ios - 如何使用swift更新tableview中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31043504/