通过两个ViewController传输数据

时间:2018-08-03 06:26:15

标签: ios swift uitableview

我有一个应用程序,其中有三个层次结构tableViews。第一个是tableView,其中包含用户的所有俱乐部。选择俱乐部时,他进入ViewController,显示所选俱乐部的所有成员。

在代码中看起来像这样:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let destinationVC: UIViewController
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "memberViewController") as! MemberViewController
            destinationVC = vc
            let selectedRow = self.tableViewClub.indexPathForSelectedRow?.row

            vc.club = clubs[selectedRow!]
        }
        self.navigationController?.pushViewController(destinationVC, animated: true)
    }

问题

然后,我可以在MemberViewController中访问该俱乐部的成员。现在,我想再次传输数据,但这一次是将数据传输到另一个ViewController,该MemberViewController通过segue连接到ViewController

问题

我如何将俱乐部的成员转移到MemberViewController上,而$Hello是通过segue连接到com.jayway.jsonpath.InvalidPathException: Illegal character at position 1 expected '.' or '[ 的,因为没有选定的行,所以我可以在代码中写出来。

2 个答案:

答案 0 :(得分:2)

在您的“ MemberViewController”中,编写以下代码:-

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
 // Create a new variable to store the instance of ViewController 
   if let destinationVC = segue.destinationViewController as? ViewController
    destinationVC.members = members
    }
}

当您通过segue将一个viewController推送到另一个时,将调用此方法。因此,您可以将“成员”从“ MemberViewController”传递到“ ViewController”

答案 1 :(得分:0)

  

您应提供一个标识符以进行隔离,然后尝试使用此代码。在MemberViewController中

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if segue.identifier == "identifier"{
        let destinationViewController = segue.destination as? ViewController
        dectination.clob = self.club
    }

}