如何使用swift更新tableview中的数据?

时间:2015-06-25 07:08:22

标签: ios swift uitableview uitabbarcontroller

目前我有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()
}

它仍然不起作用。

2 个答案:

答案 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()