ios - 在 Swift 中将图像从 ViewController 传递到 TabBarController 的 ViewController 子级

标签 ios xcode swift

这个问题我纠结了好几天了,还是解决不了。这是上下文的概述。

用户从 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”,从 SketchViewControllerTabViewController,标识为“toTabController”。

我已经看过所有其他类似的帖子,但这种情况有一些复杂性,例如 TabBarController 并且到目前为止,对这些其他帖子的大量合并和操作都没有帮助我解决这个问题。无论如何,谢谢您的指导。

最佳答案

您不想使用普通的 segue 返回到您的 HomeViewController,因为它会创建一个新的 View Controller 。相反,您想使用 unwind segue

查看此问题以了解如何设置展开转场:

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

相关文章:

ios - WebKit 转换错误转换

ios - Swift 5.3 未显示在 xcode 12 build设置中

ios - 使用 WatchConnectivity 获取核心数据请求

ios - 日期时间选择器选择获得自动更新

iphone - 是否可以更改包标识符?

ios - 在 Objective C 中用字符串替换正则表达式?

ios - 我是否必须添加我在 ios8 应用程序中使用的所有框架?

ios - 如何以编程方式在 iOS 应用程序中添加马拉雅拉姆字体(印度)

ios - viewController 中出现信号 SIGABRT 错误

ios - 圆形 UIImageView 在某些设备上是方形的