使用来自另一个 class 的参数调用 viewcontroller 中的函数

Call a function in viewcontroller with parameter from another class

我有一个 class 名为 CameraManager。它继承自 UINavigationControllerDelegateUIImagePickerControllerDelegate

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

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

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

我知道我可以用不同的方式设置照片,比如在我的 CameraManager class 中创建一个 imageview 出口,或者 viewcontroller 继承 UINavigationControllerDelegateUIImagePickerControllerDelegate

但我想在单独的 class 中执行此操作。经过一些搜索,我找到了 NotificationCenter,但是对于像我这样的 swift 初学者来说它很复杂,而且 swift 3 中带有传递参数的资源很少。

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