这个问题我纠结了好几天了,还是解决不了。这是上下文的概述。
用户从 HomeViewController
开始,这是一个选项卡式 View 。点击按钮激活 segue 到 SketchViewController
,它不是标签。用户草绘图像。用户点击完成按钮以指示草图已完成。图像被保存到 SketchViewController
上的小型、隐藏的 UIImageView
。我想将此图像传递给 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!()
}
我有一个 Storyboard“show
”,从 SketchViewController
到 TabViewController
,标识为“toTabController
”。
我已经看过所有其他类似的帖子,但这种情况有一些复杂性,例如 TabBarController
并且到目前为止,对这些其他帖子的大量合并和操作都没有帮助我解决这个问题。无论如何,谢谢您的指导。
最佳答案
您不想使用普通的 segue 返回到您的 HomeViewController
,因为它会创建一个新的 View Controller 。相反,您想使用 unwind segue。
查看此问题以了解如何设置展开转场:
您可以将 prepareForSegue
与 unwind segue 一起使用。目标 View Controller 将是您要返回的 View Controller (即,首先调用 SketchViewController
的 View Controller )。一旦你有了调用 View Controller ,将你的图像保存到它:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "returnToHomeViewController" {
let homeVC = segue.destinationViewController as! AskViewController
homeVC.sketchImage = SketchHiddenImage.image
}
}
关于ios - 在 Swift 中将图像从 ViewController 传递到 TabBarController 的 ViewController 子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33990548/