如何从不同的tableview刷新tableview中的数据

时间:2016-04-04 23:27:40

标签: ios swift uitableview

我正在开发一款游戏,您可以“聘请”开发人员为您工作。基本上我有1个表视图,其中包含您可以雇佣的所有可能的员工,以及另一个表格视图,其中包含您雇佣的员工。

问题是我有第三个表视图,您可以“学习”不同的编码语言,这反过来又会改变每个开发人员可以赚取的金额。

我想要完成的是当玩家按下按钮学习新的编码语言,更新已学习的最新编码语言的变量,从而影响开发人员赚取的金额

我已经完成了所有工作,但是为了更新我拥有的所有标签,当在另一个表视图中按下“学习”按钮时,我需要在Employees表视图中重新加载数据。有什么建议??

3 个答案:

答案 0 :(得分:6)

使用delegation

假设您有两个类EmployeeTableLearnTable。通过协议使Employee表成为Learn表的委托。

  • LearnTable类中,在顶部添加委托协议:

    protocol LearnTableDelegate {
    
        func didUpdateTable()
    
    }
    
  • EmployeeTable类必须符合协议并实现它指定的功能。通过扩展课程来遵守协议是一种很好的做法:

    extension EmployeeTable: LearnTableDelegate {
    
        func didUpdateTable() {
            // do whatever is necessary to update the table
        }
    
    }
    
  • LearnTable类需要一个位置来存储对其委托的引用,这是可选的,因为可能没有设置引用:

    class LearnTable {
    
        var delegate: LearnTableDelegate?
    
    }
    
  • (这里我假设您是从EmployeeTable执行此操作。)在创建LearnTable的实例之后,在您进入之前,将对EmployeeTable的引用添加为委托。

    let learnTable = LearnTable()
    learnTable.delegate = self
    

答案 1 :(得分:3)

您有任何代码可以向我们展示吗?

尝试使用NSNotificationCenter向其他视图控制器发送通知。例如,

在您正在调用重新加载的课程中添加此

NSNotificationCenter.defaultCenter().postNotificationName("reloadTableView" object: self)

在要刷新的表视图的类中,在视图中添加此功能

NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "refresh",
name: "reloadTableView",
object: nil)

然后在同一个类中有一个名为" refresh",

的函数
func refresh() {
  self.tableView.reloadData()
}

答案 2 :(得分:1)

我建议您继续使用学习按钮触发SELECT age, standing FROM (SELECT DISTINCT standing, avg(age) as age FROM student where standing <> 'JR' group by standing) as s ,然后使用IBAction重新加载其他UITableView。如果你需要在不同的ViewControllers中触发它,我会继续使用tableView.reloadData()