[英]dismissviewcontrolleranimated completion not calling completion on uiimagepickercontroller
[英]UIImagePickerController didFinishPickingImage calling custom function upon completion
我正在使用帶有MapView的應用程序,我有一個自定義按鈕,該按鈕顯示在MapView的頂部。 當用戶單擊該按鈕時,我想啟動相機,然后在該相機中用戶拍照並選擇“使用照片”。 除了下一部分,我已經完成所有工作。.一旦用戶選擇“使用照片”,我希望將捕獲的圖像傳遞給另一個功能。 然后釋放視圖,並返回到地圖。.我想使用完成處理程序可以完成此操作嗎? 但是我不太清楚這是否是最好的方法,如果這樣,如何將UIImage類型的圖像傳遞給要處理的函數。 有人可以幫忙嗎?
我現在有類似以下內容:
@IBAction func mapButton(sender: AnyObject) {
let image = UIImagePickerController()
//image.delegate = self
image.sourceType = UIImagePickerControllerSourceType.Camera
image.allowsEditing = false
self.presentViewController(image, animated: true, completion: nil)
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
self.dismissViewControllerAnimated(true, completion: customFunction(image))
}
func customFunction(image: UIImage) {
print("Do Something with Image")
}
通過取消注釋//image.delegate = self
行//image.delegate = self
設置圖像選擇器委托(為清楚起見,您可能希望將選擇器重命名為imagePicker或imagePickerController,以使其清楚這是一個選擇器而不是被選擇的圖像)。
同時不建議didFinishPickingImage
使用,因此最好使用didFinishPickingMediaWithInfo
要在完成處理程序上調用該函數:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage{
dismissViewControllerAnimated(true, completion: { self.customFunction(pickedImage)} )
}else{
dismissViewControllerAnimated(true, completion: nil)
}
}
或者,您可以只調用該函數,然后它們關閉選擇器:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage{
customFunction(pickedImage)
}
dismissViewControllerAnimated(true, completion: nil)
}
可以將委托中返回的圖像首先保存在引用中。 然后關閉視圖控制器,然后調用您的自定義方法。 這將確保在關閉視圖控制器之前保存圖像參考。
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
let selectedImage=image;
self.dismissViewControllerAnimated(true, completion: nil)
customFunction(image);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.