2017-05-30 70 views
2

我有一个名为CameraManager的类。它继承自UINavigationControllerDelegateUIImagePickerControllerDelegate使用另一个类的参数在视图控制器中调用函数

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])我想调用setImageInImageView(image:UIImage)功能,它是在viewcontroller中,并将用户拍摄的照片传递给它。

这是我在CameraManager类中的错误代码。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage 
    ViewController.setImageToImageView(theImage: chosenImage) // wrong code 
} 

我知道我可以设置照片以不同的方式,就像在我CameraManager类中创建一个出口的ImageView,或视图控制器继承UINavigationControllerDelegateUIImagePickerControllerDelegate

但我想在分离的类中做到这一点。经过一番搜索之后,我发现了NotificationCenter,但对于像我这样的快速入门者来说这很复杂,并且在传入参数的情况下,swift 3中的资源很少。

回答

1

您可以将您打开的ViewController对象传递给CameraManager类,并在func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])中您可以传递openViewControllerObject.setImageToImageView(theImage: chosenImage)

+0

谢谢。我将ViewController传递给CameraManager初始化器,并将其设置为CameraManager中的一个类型为ViewController的变量,并且它可以工作。你能解释一下使用通知中心的方式吗? –

+0

我对你的建议是不要为此使用通知。相反,你可以使用closure作为完成处理程序。这里关闭将是最好的方法。 –

+0

我很高兴能帮助解决您的问题。现在请标记并上传我的答案,以便对其他人有所帮助。 –

相关问题