将数组返回到Swift

时间:2017-07-28 10:31:30

标签: ios swift uitableview tableview

我有两个UIViewControllers,每个都有一个UITableView。让我们说当我从View-A调用View-B时,我将在View-B中的UITableView中标记单元格,按下按钮后我想返回一个数组,其中包含从View-B中选择的所有数据到View-A,关闭View-B并在View-A的TableView中表示该信息。 我怎么能通过那个阵列?如何在View-A中显示数据以便在消除View-B后显示它?

有什么想法吗? 非常感谢!!

3 个答案:

答案 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
    }
 }
}

答案 1 :(得分: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()
        }
    }
}

答案 2 :(得分:-1)

您需要使用委托。有关代表的更多信息,您可以浏览我的博客here