繁体   English   中英

在两个已经加载的视图控制器之间传递图像

[英]Pass an image between two already loaded view controllers

这可能是微不足道的,但我是Swift的新手,将不胜感激。

应用旨在修改图像。

我有3个ViewController:

  • 包含UIScrollView
    • 动作-对图像完成所有动作(包含在UIScrollView中)
    • 预览-图像预览(包含在UIScrollView中)

我想将UIImage从“动作”移动到“预览”。

所有视图控制器已经打开。 操作和预览是UIScrollView的并排子级。 我不想再次打开它们或自动移动到它们。 我只想在Action中完成修改后在“预览”中更新图像。

我正在使用Swift 3.0和Xcode 8。

界面生成器布局图像

通常一次只能看到一个viewController,因此,在这种情况下,它们之间进行通信的典型方式是目标上的属性,并且通常是通过单独的协议来完成的。 例如,

protocol CanDisplayImage {
    var imageToDisplay: UIImage? { get; set; }
}

然后,您的目标viewController将实现以下协议:

class MyPreviewController: UIViewController, CanDisplayImage {
    var imageToDisplay: UIImage?
    func viewDidLoad() {
        theImageView.image = imageToDisplay
    }
}

然后,您的源viewController导致到目标的segue,并在其

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let dest = segue.destination as? CanDisplayImage {
        dest.imageToDisplay = theImageToPreview
    }
}

您如何选择导致segue的方法可以不同。 最常见的是将ctrl从按钮或源viewController中的任何内容拖动到目标viewController中的任何位置。

请注意,我尚未检查上面的代码是否实际编译,因此我可能会有一些错别字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM