2017-05-30 71 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

我很高興能幫助解決您的問題。現在請標記並上傳我的答案,以便對其他人有所幫助。 –

相關問題