簡體   English   中英

UIImagePickerController didFinishPickingImage完成時調用自定義函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM