2017-12-30 9 views
0

내 응용 프로그램에서 모든 uiimagepickerview 메서드를 구현하려고 할 때 내보기 컨트롤러 (이미지 선택 후)에 아무 것도 표시되지 않습니까? 그들은 모두imagepicker에서 돌아 오면 viewcontroller의 모든 것이 사라졌습니다.

을 'disppeared'그러나 그것은 여기에 내가 내 기각 방법으로 할 수있는 뭔가가있을 수 있습니다 생각,하지만 난에 대한

덕분에 너무 확실하지 오전 내 코드

@IBAction func registerUserProfileImageSelectButton(_ sender: UIButton) { 
    imagePicker.allowsEditing = false 
    imagePicker.sourceType = .photoLibrary 
    present(imagePicker, animated: true, completion: nil) 
} 


func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 
     registerUserProfileImage.contentMode = .scaleAspectFit 
     registerUserProfileImage.image = pickedImage 
    } 
    dismiss(animated: true, completion: nil) 
} 


func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
    dismiss(animated: true, completion: nil) 
} 

의 내 텍스트 필드가 있어야합니다 미리 도움을 청하십시오! 이것은 나를 위해 작동

+0

코드가 정상적으로 보입니다. 데모 프로젝트를 공유 할 수 있습니까? –

+0

ViewWillAppear 및 ViewDidAppear 및 viewDidDispapper에서 작성한 내용은 무엇입니까? –

+0

registerUserProfileImageSelectButton 메서드에서 이미지 선택 도구에 대리자를 지정하지 않았습니다. 내 대답을 참조하십시오 @ porkchopbento –

답변

0
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
    dismiss(animated: true, completion: nil) 
} 

문제는 현재 뷰 컨트롤러가 아닌 이미지 피커 컨트롤러를 해제하려고하는 것입니다. 다음을 사용하십시오 :

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

그래야합니다!

0

완벽하게 당신이 코드를 시도 할 수 있습니다 :

import UIKit 

class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate { 

    @IBOutlet weak var imagePickerImg: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    @IBAction func imagePicker(_ sender: Any) { 
     let imagePicker = UIImagePickerController() 
     imagePicker.sourceType = .photoLibrary 
     imagePicker.delegate = self // you need to set a delegate to your image picker here 
     //to get selected (edited) portion 
     imagePicker.allowsEditing = true 
     present(imagePicker, animated: true, completion: nil) 
    } 

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

//  let img = info[UIImagePickerControllerOriginalImage] as! UIImage 

     // if you keep editing true 
     let img = info[UIImagePickerControllerEditedImage] as! UIImage 
     imagePickerImg.image = img 
     dismiss(animated: true, completion: nil) 
    } 

    public func imagePickerControllerDidCancel(_ picker: UIImagePickerController){ 
     print("Cancel Press") 
     dismiss(animated: true, completion: nil) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 
+3

이 답은 OP가 갖는 모든 문제를 어떻게 해결합니까? 무엇이 잘못되었는지 설명하고이 코드가 어떻게이 문제를 해결하는지 설명하십시오. – rmaddy

+0

check comments @maddy –

+0

왜 대리인이 설정되지 않았다고 생각합니까? 귀하의 가정은 틀린 것입니다. 질문은 대리자 메서드가 호출되고 있음을 분명히합니다. – rmaddy

관련 문제