【问题标题】:Swift 4 errors encountered while discovering extensions - photo will not load on UI发现扩展时遇到 Swift 4 错误 - 照片不会在 UI 上加载
【发布时间】:2018-09-18 20:32:03
【问题描述】:

当我从照片库中选择一张照片来填充 XCode 9.2 中的 UIImageView 时,我收到以下错误消息:

  • 发现扩展时遇到[discovery] 错误:Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled}

模拟器可以访问照片库,我可以查看照片进行选择,但是当我单击“选择”选项选择照片时,会抛出错误,并且在选择器被关闭后图像未填充 UIImageView。

如果我执行此步骤,我已经搜索了 Stack Overflow 并且能够摆脱错误消息:从 Xcode 菜单打开:产品 > 方案 > 编辑方案 > 在您的环境变量中设置 OS_ACTIVITY_MODE 值设置为禁用。但是,这只能消除错误,并不能解决我选择的照片没有填充 UIImageView 的问题。我是 Swift 和 Xcode 的新手,我被卡住了!请帮忙!

这是我的代码:

import UIKit

class HomeVC: UIViewController, UINavigationControllerDelegate, 
UIImagePickerControllerDelegate {

@IBOutlet weak var avaImg: UIImageView!
@IBOutlet weak var usernameLbl: UILabel!
@IBOutlet weak var fullnameLbl: UILabel!
@IBOutlet weak var emailLbl: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    //get user details from user global var (from database)
    let username = (user!["username"] as? String)?.uppercased()
    let fullname = user!["fullname"] as? String
    let email = user!["email"] as? String
    let ava = user!["ava"] as? String

    //populate labels on view
    usernameLbl.text = username
    fullnameLbl.text = fullname
    emailLbl.text = email


}

@IBAction func edit_click(_ sender: AnyObject) {

    //select ava
    let picker = UIImagePickerController()
    picker.delegate = self
    picker.sourceType = UIImagePickerControllerSourceType.photoLibrary
    picker.allowsEditing = true
    self.present(picker, animated: true, completion: nil)

    //selected image
    func imagePickerController(_ picker: UIImagePickerController, 
    didFinishPickingMediaWithInfo info: [String : AnyObject]) {
        let image = info[UIImagePickerControllerEditedImage] as? 
           UIImage
        avaImg.image = image

        self.dismiss(animated: true, completion: nil)
        }

    }
}

【问题讨论】:

    标签: ios swift xcode


    【解决方案1】:

    两个问题:

    • didFinishPickingMediaWithInfo 的签名错误。在 Swift 3+ 中是

      func imagePickerController(_ picker: UIImagePickerController, 
                                 didFinishPickingMediaWithInfo info: [String : Any])
      
    • 委托方法必须在类的顶层(不在其他方法中)

      @IBAction func edit_click(_ sender: Any) {
      
          //select ava
          let picker = UIImagePickerController()
          picker.delegate = self
          picker.sourceType = .photoLibrary
          picker.allowsEditing = true
          self.present(picker, animated: true, completion: nil)
      }
      
      func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
      
          //selected image
          let image = info[UIImagePickerControllerEditedImage] as? UIImage
          avaImg.image = image
          self.dismiss(animated: true, completion: nil)
      }
      

    【讨论】:

    • 已修复!非常感谢!!
    猜你喜欢
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2018-03-18
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多