无法通过当前模态segue将图像传递给另一个UIViewController

时间:2016-06-21 05:43:44

标签: ios xcode macos xcode7

我尝试将图片传递到目标imageView的另一个UIView,目标UIView通过现有的Modally segue连接到源 //Code of destination UIView import UIKit import CoreData class ReviewViewController: UIViewController { @IBOutlet var backgroundImageView:UIImageView! var subject:Semester! override func viewDidLoad() { super.viewDidLoad() backgroundImageView?.image = UIImage(data: subject.image!) let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Dark) let blurEffectView = UIVisualEffectView(effect: blurEffect) blurEffectView.frame = view.bounds backgroundImageView.addSubview(blurEffectView) // Code of Source UIView import UIKit import CoreData class SubjectDetailViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { @IBOutlet var facultyImageView:UIImageView! var subject:Semester! override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "destinationidentifier" { let destinationController = segue.destinationViewController as! ReviewViewController destinationController.backgroundImageView?.image = self.facultyImageView.image } }

我试图通过segue传递数据,并通过Outlet在源UIView中设置图像(即NSData - Core Data),但我在控制台中收到错误image description -

  

“致命错误:在打开Optional时意外发现nil   值“

{{1}}

3 个答案:

答案 0 :(得分:0)

你做错了,因为你直接在插座内设置图像而没有使用var或property传递值。

1)首先声明变量

var backgroundImage : UIImage!

2)按下

时设置该变量内的值
destinationController.backgroundImage = self.facultyImageView.image

答案 1 :(得分:0)

您的问题是backgroundImageView对象为零,因为destinationController当前不在window层次结构中。

所以改变你的prepareForSegue就像这样

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "destinationidentifier"
    {
        let destinationController = segue.destinationViewController as! ReviewViewController
        destinationController.image = self.facultyImageView.image
    }
} 

现在在ReviewViewController中创建一个图像对象,如下所示,并在viewDidLoad中添加一行

var image: UIImage!

override func viewDidLoad() {
    super.viewDidLoad()
    self.backgroundImageView?.image = self.image
}

希望这会对你有所帮助

答案 2 :(得分:0)

像这样修改你的代码,尝试使用UIImage发送图像,而不是ImageView,

$rows["maxUserID"]

希望这会对你有所帮助。