目前我有3个swift文件:ManualViewController,AutoViewController,Main
ManualViewController是带有表视图的UIViewController。 AutoViewController是一个带有几个按钮的UIViewController。 Main只是一个包含表视图所有数据的swift文件。
使用TabBarController控制ManualViewController和AutoViewController。
当我运行应用程序时,Main.swift中找到的初始内容将加载到表视图中。当我进入下一个视图,即AutoViewController并单击一个按钮来更改Main.swift中的数据时,数据会发生变化。问题是当我切换回ManualViewController时,表仍然包含旧数据而不是更新数据。
我也试过这个:
override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(false)
self.tableView.reloadData()
}
它仍然不起作用。
答案 0 :(得分:4)
您可以使用NSNotificationCenter
从其他视图更新tableView
。
您的-addObserver:
声明必须在tableView
控制器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
控制器时,您可以发布这样的通知:
NSNotificationCenter.defaultCenter().postNotificationName("refresh", object: nil, userInfo: nil)
检查THIS示例项目以获取更多信息。
希望它会对你有所帮助。
答案 1 :(得分:0)
在正常情况下,UITableView
中更新数据的方式是
self.tableView.reloadData()