簡體   English   中英

如何從另一個表視圖刷新表視圖中的數據

[英]How to refresh data in a tableview from a different tableview

我正在開發一款游戲,您可以在這里“雇用”開發人員為您工作。 基本上,我有一個表視圖可以容納您可以雇用的所有可能的雇員,而另一個表視圖可以容納您雇用的雇員。

問題是我有第三個表格視圖,您可以在其中“學習”不同的編碼語言,從而改變每個開發人員可以賺到的錢。

我要完成的工作是,當玩家按下按鈕以學習新的編碼語言,為已學習的最新編碼語言更新變量時,進而影響開發人員的收入。

我已經完成所有工作,但是為了更新我擁有的所有標簽,當在另一個表視圖中按下“學習”按鈕時,我需要在Employees表視圖中重新加載數據。 有什么建議么??

使用委托

假設您有兩個類, 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實例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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM