2017-12-30 19 views
0

私のアプリケーションですべてのuiimagepickerviewメソッドを実装しようとしているとき、(イメージを選択した後の)ビューコントローラは何も表示していませんか?それらはすべてここに私のコードは私はimagepickerから戻った後、viewcontrollerのすべてが消えましたか?

@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) 
} 

だ、私は私の方法を解任に何かかもしれ疑うが、私はあまりにも特定の

おかげではないです

「をdisppeared」しかし、それは私のテキストフィールドを持つ必要がありますあなたの助けを事前に!これは私の作品

+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

関連する問題