Delegateの設定
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = .photoLibrary
present(imagePicker, animated: true, completion: nil) //イメージピッカー表示
} else {
print("フォトライブラリが使えません")
}
imagePicker.delegate = self
と宣言するために、頭のところでUIImagePickerControllerDelegateと設定するだけじゃダメで、以下のようにUINavigationControllerDelegateも設定してやらないとエラーが出てしまう。
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { ~ }
UIImagePickerControllerのviewは自分で閉じよう
イメージピッカーで画像を選択したら、以下のdelegateメソッドが呼ばれるわけだが、
[Generic] Creating an image format with an unknown type is an errorというメッセージが出るばかりでイメージピッカーが閉じて画像をimageViewに表示してくれない。
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let image = info[UIImagePickerControllerOriginalImage] as! UIImage?
imageView.image = image
}
picker.dismiss(animated: true, completion: nil)
ってやって自分でイメージピッカーを閉じてやらにゃいかんのね。
今までObjective-Cでやってた時は自分で閉じてくれてたのに。
なんだろ、複数選択とかに対応したとかかね?
なおピッカーが閉じたところ、隠れてたimageViewには選択した画像がちゃんと表示されてた。
それでも[Generic] Creating an image format with an unknown type is an errorのメッセージは出るんだけど、これはXcode8になってから余計なメッセージが出る現象の一つかもしれないので、実用上問題なければ無視すればいいと思う。
それでも[Generic] Creating an image format with an unknown type is an errorのメッセージは出るんだけど、これはXcode8になってから余計なメッセージが出る現象の一つかもしれないので、実用上問題なければ無視すればいいと思う。