图像没有被发送到下一个视图控制器
Image isn't being sent to next view controller
我正在尝试通过 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,并在准备函数中处理了数据:
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
。
我检查了最终图像的 height/width 以确保它不为空。
这是我的 TestingViewController
(目的地)代码:
@IBOutlet 弱变量显示图像:UIImageView!
变种图像: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 所以我肯定知道图像没有被发送...但我不确定从这里去哪里?
1) 在目标视图中 "showFinal" 为您的图像创建一个参考。
var imageDisplay: UIImage? {
didSet{
if let image = imageDisplay {
self.displayImage.image = image
self.displayImage.setNeedsDisplay()
}
}
2) 现在发送这个值。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showFinal" {
let lastVC = segue.destination as! TestingViewController
lastVC.imageDisplay = self.finalImage
}
}
我猜你两者都有
@IBAction func sendSnap(_ sender: Any) {}
和 分配给同一个按钮的 segue。当您点击按钮时,将触发 segue 并调用 prepare() and sendSnap()。 运行第一个是哪个?
更好的方法是创建一个 "named" segue,然后点击按钮调用 sendSnap(),并在 sendSnap() 调用结束时:
performSegue(withIdentifier: "showFinal", sender: self)
我正在尝试通过 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,并在准备函数中处理了数据:
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
。
我检查了最终图像的 height/width 以确保它不为空。
这是我的 TestingViewController
(目的地)代码:
@IBOutlet 弱变量显示图像:UIImageView!
变种图像: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 所以我肯定知道图像没有被发送...但我不确定从这里去哪里?
1) 在目标视图中 "showFinal" 为您的图像创建一个参考。
var imageDisplay: UIImage? {
didSet{
if let image = imageDisplay {
self.displayImage.image = image
self.displayImage.setNeedsDisplay()
}
}
2) 现在发送这个值。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showFinal" {
let lastVC = segue.destination as! TestingViewController
lastVC.imageDisplay = self.finalImage
}
}
我猜你两者都有
@IBAction func sendSnap(_ sender: Any) {}
和 分配给同一个按钮的 segue。当您点击按钮时,将触发 segue 并调用 prepare() and sendSnap()。 运行第一个是哪个?
更好的方法是创建一个 "named" segue,然后点击按钮调用 sendSnap(),并在 sendSnap() 调用结束时:
performSegue(withIdentifier: "showFinal", sender: self)