ios - 将照片库中的图像导入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)
}
解决方案
它正在崩溃,因为您从未真正初始化过UIImagePickerController
. 由于您将 标记imagePickerController
为非可选值,因此当您尝试引用它但它仍然是nil
. 将此行添加到 Edit 函数的开头以初始化变量:
imagePickerController = UIImagePickerController()
编辑:或者,正如@rmaddy 提到的,您可以将控制器设为函数的局部变量。在您的示例中,无需将其设为类的属性。本质上,您只需从类的顶部删除声明,而是在函数中声明它:
let imagePickerController = UIImagePickerController()
推荐阅读
- google-apps-script - Google Script 作为 webhook 接收器
- python-3.x - 如何重新采样正在使用 wavfile.read 读取的 .wav 声音文件?
- c++ - 如何加快此程序以找到斐波那契数列
- javascript - javascript 逻辑运算符在字符串中
- java - Apache POI 支持“工作表视图”
- c# - 删除字符串的转义字符
- system-verilog - SystemVerilog中可变宽度的位切片
- css - Angular中基于模块的样式
- sql - 查找 2 个 select 语句中是否存在重复项
- arrays - 列表未呈现