将照片从照片库导入Xcode中的应用程序

时间:2019-05-22 20:36:06

标签: ios swift uiimagepickercontroller

我的应用程序不断崩溃,我不知道为什么。我正在逐部分地研究选项卡式应用程序,并在每次完成一部分时对其进行测试。 目前,我正在尝试从用户的设备导入图像,但似乎无法获取。

我当前正在使用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)
    }

1 个答案:

答案 0 :(得分:2)

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

imagePickerController = UIImagePickerController()

编辑:或者,如@rmaddy所述,您可以将控制器设置为函数的局部变量。在您的示例中,无需使其成为类的属性。本质上,您只需要从类顶部删除声明,而是在函数内部进行声明:

let imagePickerController = UIImagePickerController()