如何以编程方式执行segue时使用PrepareForSegue

时间:2015-06-17 13:17:58

标签: ios iphone json swift segue

我的故事板中有2个视图。第一个视图是登录屏幕,用户在其中输入电子邮件和密码,在单击登录按钮后,函数创建与API的HTTP连接,API检查并验证用户并发送回JSON数据。现在JSON数据在VIEW 1中。我已经以编程方式执行了我的segue,如下面的代码所示:

    dispatch_async(dispatch_get_main_queue()) {

            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let vc = storyboard.instantiateViewControllerWithIdentifier("detailView") as! UIViewController
            self.presentViewController(vc, animated: true, completion: nil)
                }

如何将JSON数据从VIEW 1传递到VIEW 2?我尝试使用prepareForSegue,因为我要求segue标识符,因为我已经以编程方式执行了我的segue,我没有segue标识符。我的故事板图片如下:

enter image description here

任何帮助将不胜感激。 提前致谢。如果您需要更多信息来回答这个问题,请告诉我。

2 个答案:

答案 0 :(得分:1)

而不是这个,您可以在新类中设置一个函数,并将数据推送到它,如下所示:

dispatch_async(dispatch_get_main_queue()) {
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let vc = storyboard.instantiateViewControllerWithIdentifier("detailView") as! UIViewController
            vc.setJSONObject(yourJSON)
            self.presentViewController(vc, animated: true, completion: nil)
}

在您的UIViewController中,您可以定义一个名为setJSONObject的函数

func setJSONObject(json:AnyObject){
     print(json)
}

答案 1 :(得分:1)

使用标识符在 Interface Builder 中创建一个segue。

使用以下代码执行segue:

self.performSegueWithIdentifier("MySegue", sender: self);

这样prepareForSegue将被执行。

以下是您案例中的情况示例

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if (segue.identifier == "MySegue")
    {
        if let detailsViewController = segue.destinationViewController as? DetailViewController {
            detailsViewController.jsonData = YOUR_JSON_STUFF;
        }

    }
}