ios - 将可选图像 UIImageView 传递给另一个 View Controller

标签 ios swift uiimageview segue sdwebimage

我很抱歉,因为我已经在另一个帖子中问过同样的问题。

感谢 http 调用,我能够从 wikimedia API 获取图像的 url 链接。到目前为止,我无法在另一个 View Controller 中传递并显示它。我使用依赖项“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”中。在目标 View Controller 中,有一个 UIImageView 我希望在其中显示它。这是目标 View Controller 中的代码

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并获取目标 View Controller ,从那里您可以设置所需的 View Controller 属性

如果你想传递图像,可以这样做:

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "toDefinition",
            let destinationViewController = segue.destination as? DefinitionViewController {
            destinationViewController.imageFromWeb = imageFromWeb
        }
    }

关于ios - 将可选图像 UIImageView 传递给另一个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59804360/

相关文章:

ios - 使用 NSDictionary 对象从数组中获取对象

ios - 如何将 AudioBuffer 转换为数据?

iphone - 滑动删除具有奇怪行为的单元格

swift - 如何使用键值编码访问父类(super class)属性?

swift - 根据 UIIMageView 等于 nil 导入图像

ios - UIButton 类别问题

json - 具有不一致 API 的 Swift Decodable

ios - 获取 Firebase 列中的所有数据

ios - AFNetworking 使用 URL 设置 UITableViewCell 的 imageView 图像,设置图像后 imageview 框架仍然为 0

ios - 如何调整 uicollectionview 单元格中 ImageView 的位置?