2017-04-04 43 views
0

我一直在试图找出这几天现在。我已经在谷歌和堆栈中进行了大量搜索,但一直无法找到可行的或有意义的东西。我对Swift很陌生,但有一些编程背景。如何将UIImage从UIImagePickerController传递给另一个UIViewController?

当前这部分应用程序拍摄一张照片,将其显示在当前视图控制器(VCPhoto)上,移动到另一个控制器,显示动画视图控制器(VCQScan),然后移动到结果视图控制器(VCResult)。我正试图将图像从VCPhoto移动到VCResult。一个答案,我发现是这样一个

Passing Image to another View Controller (Swift)

这一点,在我的代码,返回在接下来的ViewController一个空值。

VCPhoto {

@IBOutlet var butTakePhoto: UIButton! 
@IBOutlet var butSkip: UIButton! 
@IBOutlet var scanCatB: UIButton! 
@IBOutlet var previewPhoto: UIImageView! 
let picker = UIImagePickerController() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    butTakePhoto.addTarget(self, action: #selector(VCPhoto.buttonPressed(_:)), for: .touchUpInside) 
    butSkip.addTarget(self, action: #selector(VCPhoto.buttonPressed(_:)), for: .touchUpInside) 
    scanCatB.addTarget(self, action: #selector(VCPhoto.buttonPressed(_:)), for: .touchUpInside) 

    picker.delegate = self 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

public func buttonPressed (_ sender: AnyObject?){ 

    if sender === butTakePhoto { 
     if UIImagePickerController.isSourceTypeAvailable(.camera) { 
       picker.allowsEditing = false 
       picker.sourceType = UIImagePickerControllerSourceType.camera 
       picker.cameraCaptureMode = .photo 
       picker.modalPresentationStyle = .fullScreen 
      present(picker,animated: true,completion: nil) 
     } 
    } 
    if sender === scanCatB { 

     performSegue(withIdentifier: "sSegue", sender: UIButton.self) 
    } 
    if sender === butSkip { 
     performSegue(withIdentifier: "Result", sender: nil) 
    } 

} 
    func imagePickerController(
     _ picker:       UIImagePickerController, 
     didFinishPickingMediaWithInfo info: [String : Any]) 
    { 
     picker.dismiss(animated: true, completion: nil) 
     let image = info[UIImagePickerControllerOriginalImage] as? UIImage 
     previewPhoto.image = image 

     //butScan.isHidden=false 
     //butSkip.isHidden=true 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if segue.identifier == "sSegue" { 
     let dvc = segue.destination as? VCQScan 
     dvc?.newImage = previewPhoto.image 
    } 

VCScan {

@IBOutlet var catScanImage: UIImageView! 
@IBOutlet weak var browsingImage: UIImageView! 
var newImage: UIImage! 


override func viewDidLoad() { 
    super.viewDidLoad() 

    browsingImage.image = newImage 


    Timer.scheduledTimer(timeInterval: 4.0, target: self, selector: #selector(catScan), userInfo: nil, repeats: false) 

    catScanImage.animationImages = [ 
    UIImage(named: "catPerc0.png")!, 
    UIImage(named: "catPerc1.png")!, 
    UIImage(named: "catPerc2.png")!, 
    UIImage(named: "catPerc3.png")!, 
    UIImage(named: "catPerc4.png")! 
    ] 

    catScanImage.animationDuration = 0.4 
    catScanImage.startAnimating() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

func catScan() { 
    self.performSegue(withIdentifier: "lastSegue", sender: self) 
} 
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if segue.identifier == "lastSegue" { 
     let dvc = segue.destination as! VCResult 
     dvc.newImage = browsingImage.image 
    } 
} 

}

以上的赛格瑞准备正试图将其移动到下一个VC,但它不会走到这一步,它的错误

browsingImage.image = newImage 

在VCQScan中,它似乎没有移动图像,即使我可以在VCPhoto上的调试器中看到它...感谢您的任何帮助!希望这是足够的信息,如果不让我知道!再次,我是Swift和Xcode的新手,所以有机会我错过了一些非常愚蠢的东西......

调试器输出 2017-04-03 20:08:33.637110-0700 OatQuizApp [3314:1066322 [OatQuizApp。 VCResult buttonPressed:]:无法识别的选择器发送到实例0x100b1fdb0 2017-04-03 20:08:33.638569-0700 OatQuizApp [3314:1066322] *终止应用程序,由于未捕获异常'NSInvalidArgumentException',原因:' - [OatQuizApp.VCResult buttonPressed:]:无法识别的选择发送到实例0x100b1fdb0' *第一掷调用堆栈: (0x18ca7efd8 0x18b4e0538 0x18ca85ef4 0x18ca82f4c 0x18c97ed2c 0x192be30ec 0x192be306c 0x192bcd5e0 0x192be2950 0x192be246c 0x192bdd804 0x192bae418 0x1933a7f64 0x1933a26c0 0x1933 a2aec 0x18ca2d424 0x18ca2cd94 0x18ca2a9a0 0x18c95ad94 0x18e3c4074 0x192c13130 0x1000cf900 0x18b96959c) 的libC++ abi.dylib:与类型的未捕获的异常终止NSException

+0

请分享错误描述。 – ujjwal

+0

添加了错误! –

回答

0

我想通了这个问题。一切是正确编码,至少最初。我没有关注UIImageView,我在VCQScan上没有一个,只是增加了一个插座,这就是为什么它会变为空。出于某种原因,我认为UIImageView只是带着图像......我想我盯着它太久了。感谢您的期待!

相关问题