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

Rak*_*G B 7 uitabbarcontroller uitableview ios swift

目前我有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()
}
Run Code Online (Sandbox Code Playgroud)

它仍然没有用.

Dha*_*esh 8

您可以NSNotificationCenter用于tableView从另一个视图更新您的。

你的-addObserver:声明在你的tableView控制器viewDidLoad方法中必须是这样的:

override func viewDidLoad() {
    super.viewDidLoad()
     NSNotificationCenter.defaultCenter().addObserver(self, selector: "refreshTable:", name: "refresh", object: nil)
}
Run Code Online (Sandbox Code Playgroud)

你的功能addObserver会喜欢:

 func refreshTable(notification: NSNotification) {

    println("Received Notification")
    self.tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以在导航到tableView控制器时发布这样的通知:

NSNotificationCenter.defaultCenter().postNotificationName("refresh", object: nil, userInfo: nil)
Run Code Online (Sandbox Code Playgroud)

检查示例项目以获取更多信息。

希望它会帮助你。