2017-07-28 30 views
0

另一個視圖控制器我有兩個UIViewControllers和每一個具有的UITableView。比方說,當我從View-A調用到View-B時,我將在View-B中的UITableView中標記的單元格取出,在按下一個按鈕後,我想返回一個包含從View-B中選擇的所有數據的數組查看-A,關閉View-B並在View-A的TableView中表示該信息。 我該如何傳遞數組?我該如何在View-A中實時加載數據以在輕視View-B之後顯示它?返回數組中夫特

有什麼想法? 非常感謝!

+0

您使用的故事板? – Phyber

+0

是的,我正在使用它。 –

+0

您可以使用委託或關閉。 –

回答

1
protocol DataPasserDelegate { 
    func sendDatatoA(dataArrayFromB : Array<AnyObject>) 
} 

class ViewB: UIViewController { 

var delegate: DataPasserDelegate! 

var dataArrayB = Array<AnyObject>() 

@IBAction func sendData(sender: Any){ 
    self.dismiss(animated: true) { 
     self.delegate.sendDatatoA(dataArrayFromB: self.dataArrayB) 
    } 
} 
} 

class ViewA: UIViewController, DataPasserDelegate { 

@IBOutlet weak var tableViewA: UITableView! 

var dataArrayA = Array<AnyObject>() 

//MARK: - DataPasserDelegate 
func sendDatatoA(dataArrayFromB: Array<AnyObject>) { 
    dataArrayA = dataArrayFromB 

    self.tableViewA.reloadData() 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if let destVC = segue.destination as? ViewB{ 
     destVC.delegate = self 
    } 
} 
} 
+0

真棒兄弟,這個作品真的很好!非常感謝你! –

+0

最受歡迎;)快樂編碼! –

0

所以,你可以使用prepareForSegue:

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
    if (segue.identifier == "segueID") { 
     if let controller = segue.destination as? YourVC{ 
      controller.array = yourArray 
      controller.tableView.reloadData() 
     } 
    } 
} 
+0

在「如果讓控制器== segue.destination as?ListsViewController」這行中說變量綁定在一個條件需要一個initilizer。任何想法 ? –

+0

我的代碼出錯了,現在檢查它 – Phyber

+0

誰降低了這個數字,爲​​什麼?我通常會將變量傳遞給其他VC。這有什麼問題? –

-1

您將需要使用委託這一點。有關代表的更多信息,您可以通過我的博客here