首页 > 解决方案 > 将照片库中的图像导入xcode中的应用程序

问题描述

我的应用程序不断崩溃,我不知道为什么。我正在逐个处理选项卡式应用程序,并在每次完成其中一部分时对其进行测试。现在我正在尝试从用户的设备导入图像,但我似乎无法得到它。

我目前使用的是 Xcode 10.2.1,我知道委托方法发生了一些变化,我已经改变了它们。它成功构建,但是每当我点击要导入图像的特定选项卡时,它就会崩溃。

class UserImage: UIViewController,UINavigationControllerDelegate, UIImagePickerControllerDelegate {
    var imagePickerController : UIImagePickerController!

    @IBOutlet var ImageView: UIImageView!

    @IBAction func Edit(_ sender: Any) {
        imagePickerController.delegate = self
        imagePickerController.sourceType = .photoLibrary

        present(imagePickerController, animated: true, completion: nil)
    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any])
    {
        if let image = info[.originalImage] as? UIImage { 
            ImageView.image = image
        } else {
            print("Take another")
        }

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

标签: iosswiftuiimagepickercontroller

解决方案


它正在崩溃,因为您从未真正初始化过UIImagePickerController. 由于您将 标记imagePickerController为非可选值,因此当您尝试引用它但它仍然是nil. 将此行添加到 Edit 函数的开头以初始化变量:

imagePickerController = UIImagePickerController()

编辑:或者,正如@rmaddy 提到的,您可以将控制器设为函数的局部变量。在您的示例中,无需将其设为类的属性。本质上,您只需从类的顶部删除声明,而是在函数中声明它:

let imagePickerController = UIImagePickerController()

推荐阅读