본문 바로가기
ios 뽀개기/버그정리 및 팁

[ios 팁] UIImagePickerController오류- 등잔 밑을 살피자

by 인생여희 2018. 5. 3.
반응형

UIImagePickerController오류- 등잔 밑을 살피자


아이폰 어플 개발을 하던 중, 늘 사용하던 UIImagePickerController에 문제가 발생했다. 사진선택 버튼을 누르면 사진 라이브러리가 뜬다. 그리고 사진을 선택하면 선택한 사진이 imageView에 떠야하는데, imageView에 뜨질 않는 것이다. 구글링해보고, info.plist 뒤져서 사진 라이브러리 사용하겠다고 승인 처리도 해줬는데..계속 아래와 같은 오류가 떴다.

자세히보면 아래와 같다.

errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled}

구글링 해보니 해결책 같은 답변도 보였다.

결론은 아니었다. 이럴때는 소스코드를 처음부터 보는게 상책이다. viewDidLoad를 보자마자 아차 싶었다. UIImagePickerController를 사용하려면 viewDidLoad 함수 안에 picker.delegate = self 라고 작성을해야 했다. 여기서 picker는 UIImagePickerController의 인스턴스다. 아무튼 등잔 밑이 어둡다는 속담이 틀린말은 아니라는 걸 깨달았다. 앞으로 꼼꼼히 천천히 잘 살펴봐야지.


이렇게 된김에 아주 초 간단하게 UIImagePickerController을 구현하는 법을 살펴보겠다. 

1.UIImagePickerController를 구현하려는 Class에서 UIImagePickerControllerDelegate와 UINavigationControllerDelegate를 상속받는다. 

2.viewDidLoad() 위쪽에 let picker = UIImagePickerController() 객체를 만들어 준다.

3.viewDidLoad 함수 안에 picker.delegate = self 

4. 사진 선택 버튼을 눌렀을때 사진 라이브러리 띄우기

 @IBAction func selectImage(_ sender: Any) {

        picker.allowsEditing = true //편집허용

        picker.sourceType = .photoLibrary //라이브러리 타입

        present(picker, animated: true, completion: nil) //띄우기

    }


5.사진 선택이 끝났을 때 호출되는 함수

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

 if let image = info[UIImagePickerControllerEditedImage] as? UIImage{ self.imageView.image = image nextBtn.isHidden = false 


self.dismiss(animated: true, completion: nil) //선택완료후 닫아주기

 }


반응형

댓글