我尝试通过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,所以我肯定知道图像没有被发送过......但是我不确定从哪里开始?
答案 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)