2016-06-21 12 views
2

UIViewの別のimageViewに画像を渡そうとしましたが、現在のモーダルにはUIViewが接続されています。イメージを別のUIViewControllerに渡すことができません

私はセグエを介してデータを渡すと、同様のセットの画像(すなわちのNSData - コアデータ)しようとしたコンセントを介してソースUIViewのではなく、私は、コンソールにエラーimage descriptionを得た -

"fatal error: unexpectedly found nil while unwrapping an Optional value"

//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 
    } 
} 

答えて

0

あなたの問題はdestinationControllerwindow階層に、現在ではありませんので、backgroundImageViewオブジェクトがnilである一方、

1)変数最初

var backgroundImage : UIImage! 

2)は、その変数内の値を設定して宣言します。

だからあなたprepareForSegue

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

は今、これがあなた

+0

これは機能しました。どうもありがとう。 –

0

あなたがやっていますあなたはvarまたはpropertyを使って値を渡さずにアウトレットに直接イメージを設定しているので間違っています。プッシュ

destinationController.backgroundImage = self.facultyImageView.image 
+0

実際にはありません。それは私がこれに疲れている理由は、 –

+0

私の更新された答えを参照してください。 –

+0

まだ問題に直面していますか? –

0

があなたを修正するのに役立ちます希望を以下のようにReviewViewControllerで一つの画像オブジェクトを作成し、viewDidLoad

var image: UIImage! 

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

に1行を追加して変更しますこのようなコード、ImageViewではなくUIImageを使用して画像を送信してみてください。

//Code of destination UIView 
import UIKit 
import CoreData 
class ReviewViewController: UIViewController { 

@IBOutlet var backgroundImageView:UIImageView! 
var backgroundImage : UIImage! 
var subject:Semester!  

override func viewDidLoad() { 
super.viewDidLoad() 
//backgroundImageView?.image = UIImage(data: subject.image!) 
backgroundImageView?.image = self. backgroundImage 
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.backgroundImage = self.facultyImageView.image 
} 
} 

希望すると、これが役立ちます。

関連する問題