图像不会被发送到下一个视图控制器

时间:2017-03-11 19:15:25

标签: ios swift xcode uiimageview uistoryboardsegue

我尝试通过segue将图像从一个视图发送到另一个视图,并在UIImageView中显示所述图像。

以下代码获取图片并将其分配给全局UIImage变量。 请原谅图形代码,我一直在尝试合并图像和文本字段来创建单个图像:

@IBAction func sendSnap(_ sender: Any) {
    var size = CGSize(width: self.takenImage.size.width, height: self.takenImage.size.height)
    UIGraphicsBeginImageContext(size)
    let areaSize = CGRect(x: 0, y: 0, width: self.takenImage.size.width, height: self.takenImage.size.height)
    self.takenImage.draw(in: areaSize)
    var outputImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()
    self.finalImage = outputImage
}

然后我创建了一个带有标识符的segue,该标识符从按钮到目标控制器并处理prepare func中的数据:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showFinal" {
        let lastVC = segue.destination as! TestingViewController
        lastVC.image = self.finalImage
    }
}

我遇到的问题是由于某种原因,lastVC.image未被分配self.finalImage

我检查了最终图片的高度/宽度,以确保它不是空的。

以下是TestingViewController(目的地)的代码: @IBOutlet weak var displayImage:UIImageView!     var image:UIImage = UIImage()

override func viewDidLoad() {
    super.viewDidLoad()
    self.displayImage.image = image
    print(image.size.height) 
    // Do any additional setup after loading the view.
}

image.size.height在控制台中打印0.0,所以我肯定知道图像没有被发送过......但是我不确定从哪里开始?

2 个答案:

答案 0 :(得分:1)

1)在目的地视图" showFinal"为您的图像创建参考。

\

2)现在发送此值。

var imageDisplay: UIImage? {
  didSet{
        if let image = imageDisplay {
           self.displayImage.image = image
           self.displayImage.setNeedsDisplay()
    }
}

}

答案 1 :(得分:1)

我猜你有两个

@IBAction func sendSnap(_ sender: Any) {}

分配给同一按钮的segue。当您点击按钮时,将触发segue以及prepare()调用sendSnap()。哪一个先运行?

更好的方法是创建一个名为"命名的#34; segue,然后按下tap按钮调用sendSnap(),并在sendSnap()调用结束时调用:

performSegue(withIdentifier: "showFinal", sender: self)