![](/img/trans.png)
[英]Refresh TableView Cell at different intervals in Swift to get data from URL
[英]How to refresh data in a tableview from a different tableview
我正在开发一款游戏,您可以在这里“雇用”开发人员为您工作。 基本上,我有一个表视图可以容纳您可以雇用的所有可能的雇员,而另一个表视图可以容纳您雇用的雇员。
问题是我有第三个表格视图,您可以在其中“学习”不同的编码语言,从而改变每个开发人员可以赚到的钱。
我要完成的工作是,当玩家按下按钮以学习新的编码语言,为已学习的最新编码语言更新变量时,进而影响开发人员的收入。
我已经完成所有工作,但是为了更新我拥有的所有标签,当在另一个表视图中按下“学习”按钮时,我需要在Employees表视图中重新加载数据。 有什么建议么??
使用委托 。
假设您有两个类, EmployeeTable
和LearnTable
。 通过协议使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
实例LearnTable
,然后选择插入,将对EmployeeTable的引用作为委托添加。
let learnTable = LearnTable() learnTable.delegate = self
您有任何代码可以向我们展示吗?
尝试使用NSNotificationCenter将通知发送到另一个视图控制器。 例如,
在您要调用的类中,从中重新加载
NSNotificationCenter.defaultCenter().postNotificationName("reloadTableView" object: self)
在您要刷新的表视图的类中,在确实加载的视图中添加它
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "refresh",
name: "reloadTableView",
object: nil)
然后在同一个类中有一个称为“刷新”的函数,
func refresh() {
self.tableView.reloadData()
}
我建议您继续使用学习按钮触发IBAction
,然后使用tableView.reloadData()
重新加载另一个UITableView
。 如果您需要在不同的ViewController中触发它,我将继续使用NSNotificationCenter
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.