我已经解决了这个问题几天无法破解它。以下是对上下文的概述。
用户从HomeViewController
开始,这是一个标签视图。点击按钮激活segue到SketchViewController
,而不是标签。用户草绘图像。用户点击完成按钮以指示草图已完成。图片会保存到UIImageView
上隐藏的小SketchViewController
。我想将此图像传递给HomeViewController,它将在那里使用。
以下是图片开始的SketchViewController
:
class SketchViewController: UIViewController {
@IBOutlet weak var SketchHiddenImage: UIImageView!
@IBAction func DoneButtonTapped(sender: AnyObject) {
//screenshot taken which results in the following
SketchHiddenImage.image = image
}
// Pass image to HomeViewController
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "toTabController" {
let tabbar: UITabBarController = segue.destinationViewController as! UITabBarController
let DestViewController: HomeViewController = tabbar.viewControllers?.first as! HomeViewController
DestViewController.sketchImage = SketchHiddenImage.image
}
}
这是我想要图像结束的HomeViewController:
class AskViewController: UIViewController {
@IBOutlet weak var HiddenTransferImage: UIImageView!
var sketchImage = UIImage!()
}
我有一个故事板" show
"从SketchViewController
转换为TabViewController
并带有身份" toTabController
"。
我已经看过所有其他类似的帖子,但是这种情况有一些并发症,例如TabBarController
并且没有任何合并和操纵其他帖子帮助我解决了这个问题。无论如何,谢谢你的指导。
答案 0 :(得分:0)
您不想使用普通的segue返回HomeViewController
,因为它会创建一个新的视图控制器。相反,您想使用展开segue 。
请看这个问题,了解如何设置展开segue:
您可以将prepareForSegue
与展开segue一起使用。目标视图控制器将是您要返回的视图控制器(即,首先调用SketchViewController
的视图控制器)。有了调用视图控制器后,将图像保存到它:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "returnToHomeViewController" {
let homeVC = segue.destinationViewController as! AskViewController
homeVC.sketchImage = SketchHiddenImage.image
}
}