2016-04-28 42 views
0

我想用segue在两个视图之间传递UIImage。问题是我的UIImage在第二个视图控制器中显示为白色。用segue传递UIImage

的赛格瑞:

var screenShot = UIImage() 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if (segue.identifier == "screenshotEmbed") { 
     let svc = segue.destinationViewController as! screenshotViewController 
     svc.toPass = self.screenshot 
    } 

的secondViewController:

class screenshotViewController: UIViewController { 

@IBOutlet var screenshotView: UIImageView! 
var toPass = UIImage() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.screenshotView.image = self.toPass   
} 

}

我的UIImage只是一个截图,这里的功能:

func captureScreen() -> UIImage { 
    var window: UIWindow? = UIApplication.sharedApplication().keyWindow 
    window = UIApplication.sharedApplication().windows[0] 
    UIGraphicsBeginImageContextWithOptions(window!.frame.size, window!.opaque, 0.0) 
    window!.layer.renderInContext(UIGraphicsGetCurrentContext()!) 
    let image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    return image; 
} 

编辑。上的按钮截图存储:

@IBAction func photoAction(sender: AnyObject) { 
    self.screenShot = captureScreen() 
} 

我试过很多的事情,但还是空白(非空事业内存ADRESS是好的)。

回答

1

不确定您的screenshotImage对象是否有图像。

我试过下面的代码,它工作正常。

import UIKit 

class ViewController: UIViewController { 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if (segue.identifier == "screenshotEmbed") { 
      let svc = segue.destinationViewController as! ScreenshotViewController 
      svc.toPass = captureScreen() 
     } 
    } 

    func captureScreen() -> UIImage { 
     var window: UIWindow? = UIApplication.sharedApplication().keyWindow 
     window = UIApplication.sharedApplication().windows[0] 
     UIGraphicsBeginImageContextWithOptions(window!.frame.size, window!.opaque, 0.0) 
     window!.layer.renderInContext(UIGraphicsGetCurrentContext()!) 
     let image = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     return image; 
    } 

} 

结果与此代码:

enter image description here

项目Sample欲了解更多信息。

+0

screenshotImage是一个河畔的UIImage。这很奇怪。如果我做svc.toPass = capture()它也可以..但我必须在screenshotImage上存储。我将使用screenshoteImage存储编辑帖子 – Makaille

+0

您的'screenshotImage'对象具有任何图像? –

+0

不错,这是我的IBAction(我存储screenShot)的问题是在AnyObject上,而不是在UIbutton上。我认为它仍然很奇怪,但现在它的工作... – Makaille

0
在第二个场景

你应该,因为第二个场景修改属性

var toPass: UIImage! 

您最初的图像的UIImage()

+0

试过但不工作 – Makaille