【问题标题】: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 ..)等