Swift Alamofire请求-使用UIWebView回答VC
我从Swift Alamofire请求-使用UIWebView回答VC,swift,string,request,alamofire,Swift,String,Request,Alamofire,我从Alamofire请求中得到答案,我想用UIWebView将答案传递到另一个UIViewController { "result":{ "code":"0", "description":"" }, "operation":[{ "status":boolean, "paymentType":integer, "orderID":integer", "paymentData":"string", "token":"string"
Alamofire
请求中得到答案,我想用UIWebView
将答案传递到另一个UIViewController
{
"result":{
"code":"0",
"description":""
},
"operation":[{
"status":boolean,
"paymentType":integer,
"orderID":integer",
"paymentData":"string",
"token":"string",
"user":[{
"user_status":"string",
"userID":integer,
}]
}]
}
在paymentData
中,获取如下字符串:
<form action="https:..." method="post">
<input name=".." value=".." type="hidden"/>
<input name=".." value=".." type="hidden"/>
<input name=".." value=".." type="hidden">
<input name=".." value="nil" type="hidden"/>
<input name=".." value=".." type="hidden"/>
<input name=".." value=".." type="hidden"/>
<input name=".." value=".." type="hidden">
<input type=".." value="PPP" style="background: #3aaf42; border: none; color: #fff; text-align: center; width: 100px; padding: 5px; margin: -15px 0 0 -50px; display: block; top: 50%; border-radius: 3px; position: absolute; left: 50%;\"/>
</form>
在第一个视图中,Alamofire中的im catch paymentData如下所示:
Alamofire.request("http://...", method: .get, parameters: params).responseJSON { response in
if let r = response.result.value as? NSDictionary {
let jsss = JSON(r)
if let result = r.value(forKey: "result") as? NSDictionary {
if let nass = result.value(forKey: "description") as? String {
// print(response.result.value)
if let code = result.value(forKey: "code") as? String {
// print(code)
if code == "0" {
if let orderIDD = jsss["operation"].array![0]["orderID"].int {
// print("order--------------------- \(orderIDD)")
self.webb?.orderID = orderIDD
}
if let paymentData = jsss["operation"].array![0]["paymentData"].string {
// print(paymentData)
self.webb?.paymentDat = paymentData
}
if paymentType == 1 {
self.performSegue(withIdentifier: "WebView", sender: self)
self.alert(title: "ОК!", message: nass)
} else {
self.alert(title: "ОК!", message: nass)
}
} else {
self.alert(title: "Error!", message: nass)
}
}
}
}
} else {
self.alert(title: "Error connect!", message: "Error connect")
}
}
如何在另一个VC中显示paymentData?您需要在
prepare(对于segue:UIStoryboardSegue,sender:Any?
方法中设置值
在第一个ViewController中添加此方法:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "WebView", let webView = segue.destination as? WebViewController {
webView.paymentDat = sender as! String
}
}
在响应代码中添加以下更改:
Alamofire.request("http://...", method: .get, parameters: params).responseJSON { response in
if let r = response.result.value as? NSDictionary {
let jsss = JSON(r)
if let result = r.value(forKey: "result") as? NSDictionary {
if let nass = result.value(forKey: "description") as? String {
// print(response.result.value)
if let code = result.value(forKey: "code") as? String {
// print(code)
if code == "0" {
var paymentHTML = ""
if let orderIDD = jsss["operation"].array![0]["orderID"].int {
// print("order--------------------- \(orderIDD)")
self.webb?.orderID = orderIDD
}
if let paymentData = jsss["operation"].array![0]["paymentData"].string {
// print(paymentData)
paymentHTML = paymentData
}
if paymentType == 1 {
self.performSegue(withIdentifier: "WebView", sender: paymentHTML) // Pass
self.alert(title: "ОК!", message: nass)
} else {
self.alert(title: "ОК!", message: nass)
}
} else {
self.alert(title: "Error!", message: nass)
}
}
}
}
} else {
self.alert(title: "Error connect!", message: "Error connect")
}
}
更好的方法是将此JSON传递到您从中获取HTML的URL,URL应返回预先填充的表单。@Mukesh,Requtst给我这个预先填充的表单,我想将此表单从一个请求转移到另一个带有WebViewController的ViewController您的问题不清楚。您拥有数据,将其设置为
paymentDat
变量,然后使用该html字符串加载webView
。问题出在哪里?@Mukesh是的,我将其设置为paymentDat
并加载webView
,但它没有显示在webView
中。您是否调试了它,并检查是否在webView ViewController的paymentDat
变量中获得了值?
Alamofire.request("http://...", method: .get, parameters: params).responseJSON { response in
if let r = response.result.value as? NSDictionary {
let jsss = JSON(r)
if let result = r.value(forKey: "result") as? NSDictionary {
if let nass = result.value(forKey: "description") as? String {
// print(response.result.value)
if let code = result.value(forKey: "code") as? String {
// print(code)
if code == "0" {
var paymentHTML = ""
if let orderIDD = jsss["operation"].array![0]["orderID"].int {
// print("order--------------------- \(orderIDD)")
self.webb?.orderID = orderIDD
}
if let paymentData = jsss["operation"].array![0]["paymentData"].string {
// print(paymentData)
paymentHTML = paymentData
}
if paymentType == 1 {
self.performSegue(withIdentifier: "WebView", sender: paymentHTML) // Pass
self.alert(title: "ОК!", message: nass)
} else {
self.alert(title: "ОК!", message: nass)
}
} else {
self.alert(title: "Error!", message: nass)
}
}
}
}
} else {
self.alert(title: "Error connect!", message: "Error connect")
}
}