Я не могу установить изображение из библиотеки фотографий на imageView и получил ошибку Error Domain=PlugInKit Code=13 "запрос отменен"

Я разрабатываю приложение для iOS с использованием swift4. При нажатии на просмотр изображения профиля, чтобы установить изображение профиля на просмотр изображения, у меня есть функция вызова жестом касания.

Ниже мой код. Я реализовал делегат выбора, используя расширение, следующее за быстрым руководством.

Увидев несколько документов об одной и той же проблеме, я думаю, что сделал то, что должен сделать. Но я не могу понять ошибку и установить изображение на просмотр изображений. Пожалуйста, проверьте мой код.

import UIKit
import Kingfisher
import Alamofire
import Photos
class MyProfileVC: BaseNavigationVC {

@IBOutlet weak var stateMessageLabel: UILabel!
@IBOutlet weak var profileImageView: UIImageView!
@IBOutlet weak var nicknameLabel: UILabel!
@IBOutlet weak var sexImageView: UIImageView!
@IBOutlet weak var hash1Button: UIButton!
@IBOutlet weak var hash2Button: UIButton!
@IBOutlet weak var hash3Button: UIButton!

let picker = UIImagePickerController()

override func viewDidLoad() {
    super.viewDidLoad()


    picker.delegate = self

    picker.allowsEditing = true
    picker.sourceType = .photoLibrary
    picker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)!

    let tap = UITapGestureRecognizer(target: self, action: #selector(self.tappedProfileImageView))
    profileImageView.addGestureRecognizer(tap)
    profileImageView.isUserInteractionEnabled = true


}

@objc func tappedProfileImageView(){
    openGallery()
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(false)
    self.checkPermission()


//I updated this part. this code works correctly
    if let imageUrl = UserInfo.shared().photoUri{
        let url = URL(string: imageUrl)

        profileImageView.layer.masksToBounds = false
        profileImageView.clipsToBounds = true
        profileImageView.layer.cornerRadius = profileImageView.frame.size.width / 2
        profileImageView.contentMode = .scaleAspectFill
        profileImageView.kf.setImage(with: url)

    }
}


func openGallery(){
    picker.sourceType = .photoLibrary

    present(picker, animated: true, completion: nil)


}

func checkPermission() {
    let photoAuthorizationStatus = PHPhotoLibrary.authorizationStatus()
    switch photoAuthorizationStatus {
    case .authorized: print("Access is granted by user")
    case .notDetermined: PHPhotoLibrary.requestAuthorization({
        (newStatus) in
        print("status is \(newStatus)")
        if newStatus == PHAuthorizationStatus.authorized {
            print("success") }
    })
    case .restricted:
        print("User do not have access to photo album.")
    case .denied:
        print("User has denied the permission.")
    }
}

}

extension MyProfileVC : UIImagePickerControllerDelegate, 

UINavigationControllerDelegate{
    @objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage{


        self.profileImageView.image = image
        print(info)

    }

    dismiss(animated: true, completion: nil)

}

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

}

Что будет причиной проблемы.

Когда я печатаю информацию, область отладки отображается следующим образом.

[__C.UIImagePickerControllerInfoKey (_rawValue: UIImagePickerControllerReferenceURL): asset-library://asset/asset.JPG? Id=54FE2CEF-59E7-4BCC-AF84-D64C1F32E58B&ext=JPG, __Control_Info, 0}, {+2732,0000581881218, +2047,1787102689659}}, __C.UIImagePickerControllerInfoKey(_rawValue: UIImagePickerControllerEditedImage): размер {748, 560} ориентации 0 шкалы 1,000000, __C.UIImagePickerControllerInfoKey(_rawValue: UIImagePickerControllerMediaType): public.image, __C.UIImagePickerControllerInfoKey(_rawValue: UIImagePickerControllerOriginalImage): размер {2732, 2048} ориентации 0 шкалы 1,000000, __C.UIImagePickerControllerInfoKey(_rawValue: UIImagePickerControllerPHAsset): 54FE2CEF-59E7-4BCC-AF84-D64C1F32E58B/L0/001 MEDIATYPE = 1/4, SourceType=1, (2732x2048), creationDate=2018-09-17 02:01:23 +0000, location=0, hidden=0, favour =0, __C.UIImagePickerControllerInfoKey(_rawValue: UIImagePickerControllerImageURL): file:///private/ вар / мобильный / Контейнеры / данные / Применение /CD64C336-B5F1-48F6-9D54-504006ADD6E2/ TMP /DD94F454-F3BE-4EF9-9F6F-0C90F61BEE19.jpeg]

1 ответ

Это было мое отсутствие программирования мышления. Несмотря на то, что я выбрал фотографию из библиотеки фотографий, после закрытия действия "Выбор фотографии" viewWillAppear установил предыдущее изображение в ImageView.

Другие вопросы по тегам