如何将json响应从一个视图控制器传递到另一个故事板上的另一个视图控制器

时间:2019-08-05 11:15:55

标签: ios swift xcode

如何将我从api接收到的json响应传递给另一个分镜脚本中的另一个viewcontroller?

我尝试使用segues,但似乎不起作用

let propass = UIStoryboard(name: "ProfileStoryboard", bundle: Bundle.main).instantiateViewController(withIdentifier: "ProfileViewController") as! ProfileViewController
propass.proDict2 = parseJSON2

2 个答案:

答案 0 :(得分:0)

尝试添加:

self.present(propass, animated: true, completion: nil)

之后:

propass.proDict2 = parseJSON2

答案 1 :(得分:0)

如果您通过情节提要板设置了segue,那么当您尝试上述代码时,就无法通过segue起作用。问题在于,当您设置情节提要剧集时,应用程序会处理创建新的VC并从原始VC展示/显示它的情况。

您在代码中所做的是,您正在实例化同一视图控制器的新版本,而不是所显示/呈现的版本。

您有2种方法来实现此目的,首先是通过重写ViewController中的prepareForSegue来显示/展示您的Propass View Controller:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "YOUR SEGUE IDENTIFIER FROM THE STORYBOARD" {
        let propassVC = segue.destination as! ProfileViewController
        propassVC.proDict = parseJSON2
    }
}

另一种实现此方法的方法是,删除您在情节提要中设置的segue。然后按照初始化Propass VC并将数据传递给它的方式进行操作。

    let propassStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let propassVC = propassStoryboard.instantiateViewController(withIdentifier: "PROPASS IDENTIFIER SET IN STORYBOARD") as ProfileViewController

    propassVC.jsonDict = JSONParse2
    show(propassVC, sender: nil)
相关问题