【问题标题】:How to load view controller (or invoke segue) after response gets loaded(using Alamofire)?加载响应后(使用 Alamofire)如何加载视图控制器(或调用 segue)?
【发布时间】:2017-06-18 06:30:57
【问题描述】:

我是 swift 新手

我在第一个视图控制器上有几个按钮。我为每个按钮单击(从第一个 ViewController 使用 Alamofire)向服务器发出不同的请求,并且只有当我从服务器作为 JSON 获得响应时,才应该加载第二个 ViewController(进一步我将通过动态填充第二个 ViewController 上的控件解析响应 JSON 数据)。

我的问题是第二个视图控制器加载了旧数据(在该按钮单击加载响应之前)。

我的场景:(swift 3)

  • 当我单击 ButtonA 时,返回并再次单击 ButtonA - ButtonA 的数据会正确显示
  • 当我单击 ButtonA 时,返回并单击 ButtonB - ButtonA 的数据显示错误

请原谅没有发布代码(由于工作场所的一些限制)。在此先感谢

【问题讨论】:

    标签: ios swift request response alamofire


    【解决方案1】:

    您可以像这样在 performSegue 的 sender 参数中传递从服务器接收到的子数据:

    let jsonDataReceived = /*Returned data from server (Array or Dictionary )*/
        self.performSegue(withIdentifier: "YOUR_SEGUE_ID", sender: jsonDataReceived)
    

    然后准备 segue 方法,您可以检索您的数据对象:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "YOUR_SEGUE_ID" {
            let jsonDataReceived = sender as? //(Array or Dictionary )
            /* intialize you viewController data with jsonDataReceived*/
        }
    }
    

    【讨论】:

    • 非常感谢,你拯救了我的一天!
    【解决方案2】:

    你可以用“.responseJSON”分析你的请求,如果你想加载一个新的segue,添加一个“if”和声明performSegue(withIdentifier ..)等

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 2013-09-18
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多