2016-11-16 18 views
0

UIImagePickerControllerを使用して画像を選択しようとしています。私はUIImageViewの1つのIBOutletがある次のコードを持っています。UIImageViewがUIIMagePickerControllerで選択した画像を表示していません

didFinishPickingMediaWithInfoでイメージを選択した後、イメージをメモリに取得しましたが、何とかイメージビューに表示されません。 imageviewのdidFinishPickingMediaWithInfoの静的なイメージを変更しようとしましたが、イメージも表示されませんでした。コードは、私はこれは私がdidFinishPickingMediaWithInfoにこのImageViewのために変更していますどのようなイメージが動作していないという一般的な問題だと思い、以下のように

class SnapshotViewController: UIViewController,UINavigationControllerDelegate, UIImagePickerControllerDelegate 
{ 
    @IBOutlet var imageView: UIImageView! 
    @IBAction func takePhoto(sender: AnyObject) { 
     let imagePicker = UIImagePickerController() 
     imagePicker.delegate = self 
     imagePicker.sourceType = .PhotoLibrary 
     imagePicker.allowsEditing = false 
     presentViewController(imagePicker, animated: true, completion: nil) 
    } 


    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 

     dismissViewControllerAnimated(true, completion: nil) 
     dispatch_async(dispatch_get_main_queue()) 
     { 
      let image = info[UIImagePickerControllerOriginalImage] as? UIImage 
      self.imageView.image = image 
     } 
    } 
} 

です。私がviewDidLoadでimageViewイメージを変更すると、それは動作します。 フォトライブラリで選択した画像を表示する必要があるため、誰でも助けてください。

+0

を私は削除することをお勧めその不要な 'dispatch_async'ブロックを削除して、イメージを最初に設定してから、イメージピッカーを閉じます。 – xinatanil

答えて

0

UIコントロールをバックグラウンドスレッドから更新しないことを強くお勧めします。これは、奇妙な動作やクラッシュの原因となり、時には識別が困難な場合もあります。

代わりに、メインスレッド上の画像を設定してください:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 

    let image = info[UIImagePickerControllerOriginalImage] as? UIImage 
    self.imageView.image = image 

    dismissViewControllerAnimated(true, completion: nil) 
} 
+0

これを行っても画像は表示されません。 – neena

+0

私はシミュレータで試してみました。 NSPhotoLibraryUsageDescriptionここにをinfo.plistに追加しましたか? –

0

私はこのコードはあなたの問題を解決し、あなたのフォトライブラリから写真を作るだろうと思うが表示されます。

class PostViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate { 



    @IBOutlet var imageToPost: UIImageView! 

    @IBAction func chooseAnImage(_ sender: AnyObject) { 

     let imagePicker = UIImagePickerController() 

     imagePicker.delegate = self 

     imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary 

     imagePicker.allowsEditing = false 

     self.present(imagePicker, animated: true, completion: nil) 

    } 

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 

     if let image = info[UIImagePickerControllerOriginalImage] as? UIImage { 

      imageToPost.image = image 


     } 

     self.dismiss(animated: true, completion: nil) 

    } 
関連する問題