Используйте UIImagePicker, чтобы установить изображение в UIImageView - PullRequest
1 голос
/ 31 января 2020

Вот так выглядит мой код. То, что я ожидаю, это то, что profileImage (UIImageView) отображает выбранное изображение, поскольку в данный момент этого не происходит.

import UIKit

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

@IBOutlet var profileImage: UIImageView!

let picker = UIImagePickerController()

override func viewDidLoad() {
        super.viewDidLoad()

        picker.delegate = self
        picker.sourceType = .photoLibrary
}


    @IBAction func photoUploadPressed(_ sender: Any) {

        if UIImagePickerController.isSourceTypeAvailable(.photoLibrary){
            let myPickerController = UIImagePickerController()
            myPickerController.delegate = self;
            myPickerController.sourceType = .photoLibrary
            self.present(myPickerController, animated: true, completion: nil)

    }


    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage{
            selectedImage = image
            profileImage.image = image
        }
        dismiss(animated: true, completion: nil)
    }

}

В настоящее время появляется средство выбора изображений, но после выбора оно не меняет изображение UIImageView.

Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 31 января 2020

Это работает, как и ожидалось, единственная ошибка в вашем коде: вы пропустили} в photoUploadPressed(_ sender: Any), и вы не объявили selectedImage и не использовали его внутри imagePickerController

Рабочий код

import UIKit

class ViewController: UIViewController , UIImagePickerControllerDelegate, UINavigationControllerDelegate{
let picker = UIImagePickerController()

    var selectedImage: UIImage?
    @IBOutlet weak var profileImage: UIImageView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        picker.delegate = self
        picker.sourceType = .photoLibrary
    }

    @IBAction func potoUploadPressed(_ sender: Any) {
        if UIImagePickerController.isSourceTypeAvailable(.photoLibrary){
                   let myPickerController = UIImagePickerController()
                   myPickerController.delegate = self;
                   myPickerController.sourceType = .photoLibrary
                   self.present(myPickerController, animated: true, completion: nil)
        }// It is missing in your code

    }


    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
           if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage{
               selectedImage = image // You have not declared selectedImage
               profileImage.image = image
           }
           dismiss(animated: true, completion: nil)
       }

}



...