将图像从ViewController传递给Swift中TabBarController的ViewController子节点

时间:2015-11-30 02:21:19

标签: ios xcode swift

我已经解决了这个问题几天无法破解它。以下是对上下文的概述。

用户从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并且没有任何合并和操纵其他帖子帮助我解决了这个问题。无论如何,谢谢你的指导。

1 个答案:

答案 0 :(得分:0)

您不想使用普通的segue返回HomeViewController,因为它会创建一个新的视图控制器。相反,您想使用展开segue

请看这个问题,了解如何设置展开segue:

How to set up unwind 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
    }
}