2016-06-21 1 views
2

다른 imageView 대상 UIView에 전달하려고했는데 현재에 연결되어 있습니다.다른 UIViewController 현재 이미지를 통해 전달할 수 없습니다

나는 SEGUE을 통해 데이터뿐만 아니라 설정 화면 (예을 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)는 그 변수의 내부 값을 설정 선언.

그래서이 수정 당신에게

+0

이것은 효과가 있습니다. 고마워. –

0

을하고있다 var 또는 property를 사용하여 값을 전달하지 않고 콘센트에서 직접 이미지를 설정하면 잘못되었습니다. 푸시

destinationController.backgroundImage = self.facultyImageView.image 
+0

실제로는 아닙니다. 그게 내가이 피곤한 이유는 –

+0

내 대답을 참조하십시오. –

+0

아직도 문제가 있습니까? –

0

도움이 될 것입니다 아래와 같이 ReviewViewController에이

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

같은 prepareForSegue 이제 생성 한 이미지 오브젝트를 변경하고 viewDidLoad

var image: UIImage! 

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

희망에 한 줄을 추가하려면 이 같은 코드, UIImage 대신 ImageView,

를 사용하여 이미지를 보내려고합니다. 10
//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 
} 
} 

희망이 도움이 될 것입니다.