我很抱歉,因为我已经在另一个话题中问过同样的问题。
感谢http调用,我能够从Wikimedia API中获取指向图像的URL链接。到目前为止,我无法通过并将其显示在另一个视图控制器中。我使用依赖项“ SDWebImage”显示URL链接。
这里是http请求的代码
let parameters : [String:String] = [
"format" : "json",
"action" : "query",
"prop" : "extracts|pageimages",
"exintro" : "",
"explaintext" : "",
"titles" : termDefinition,
"indexpageids" : "",
"redirects" : "1",
"pithumbsize" : "500"
]
//
request(wikipediaURl, method: .get, parameters: parameters).responseJSON { (response) in
if response.result.isSuccess {
//1. on affiche le tableau json initial
let definitionJSON: JSON = JSON(response.result.value)
print(definitionJSON)
// 3 valeurs : pageID,definition et source de l'image
let pageId = definitionJSON["query"]["pageids"][0].stringValue
let pageDefinition = definitionJSON["query"]["pages"][pageId]["extract"].stringValue
let imageSource = definitionJSON["query"]["pages"][pageId]["thumbnail"]["source"].stringValue
//on attache ces valeurs extraites aux bonnes variables
self.illustration.sd_setImage(with: URL(string: imageSource))
self.termDefinitionInfo = pageDefinition
print(imageSource)
// cas ou on n'a pas de definition
if pageDefinition == "" {
self.termDefinitionInfo = "Désolé,ce que vous cherchez ne se trouve pas sur Wikipedia"
}
// et on effectue le segue vers le second view controller ici
self.performSegue(withIdentifier: "toDefinition", sender: self)
print(self.termDefinitionInfo)
} else {
print("Error! Could not fetch data!")
}
}
}
图像位于变量'imageSource'中。在目标视图控制器中,我希望在其中显示UIImageView。这是目标视图控制器中的代码
import SwiftyJSON
import Alamofire
import SDWebImage
class DefinitionViewController: UIViewController {
@IBOutlet weak var definitionIllustrationImageView: UIImageView!
@IBOutlet weak var definitionTextView: UITextView!
// on cree deux variables pour attacher l'image illustrative et la definition
var definition: String?
var imageIllustrative: UIImageView?
override func viewDidLoad() {
super.viewDidLoad()
definitionTextView.text = definition
// Do any additional setup after loading the view.
}
}
您需要重写prepareForSegue
并获取目标视图控制器,从那里可以设置所需的视图控制器属性
如果您想传递图像,您可以这样做:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toDefinition",
let destinationViewController = segue.destination as? DefinitionViewController {
destinationViewController.imageFromWeb = imageFromWeb
}
}
我有一个局部解决方案,该解决方案仅能通过图像本身显示而归功于库(SDWebImage)。
但是,我能够将url数据传递到目标VC。
首先,您将创建一个将保存URL值的变量:var lienOriginalImage: String = ""
在http请求中,您将url传递给该变量:self.lienOriginalImage = imageSource
在目标视图控制器中,创建一个可选字符串:var urlImage: String?
最后,在准备segue时,您可以像这样传递数据:secondVC.urlImage = lienOriginalImage