gpt4 book ai didi

swift - "fatal error: unexpectedly found nil while unwrapping an Optional value"用于 ImageView

转载 作者:行者123 更新时间:2023-11-30 10:08:40 27 4
gpt4 key购买 nike

我有一个 View ,有一个按钮和一个ImageView。当按下时,按钮会触发 UIImagePickerController 并且 UIView 将显示拾取的图像。我尝试不使用 Storyboard来执行此操作,但我在这一行 imageView.contentMode 处不断收到“ fatal error :在展开可选值时意外发现 nil” = .ScaleAspectFit。我查看了其他建议使用 editingInfo[UIImagePickerControllerOriginalImage] 而不是 info[UIImagePickerControllerOriginalImage] 的 stackoverflow 帖子,但它没有起作用。您如何解决这个问题?

import UIKit

class EditViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

var imageView: UIImageView!=nil

override func viewDidLoad() {
super.viewDidLoad()
createBackground()
createImageView()
createButton()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func createBackground() {
let backgroundImage = UIImage(named: "pinetree")
var imageView: UIImageView!
imageView = UIImageView(frame: view.bounds)
imageView.contentMode = .ScaleAspectFill
imageView.clipsToBounds = true
imageView.image = backgroundImage
imageView.center = view.center
view.addSubview(imageView)
self.view.sendSubviewToBack(imageView)
}

func createImageView() {
var image: UIImage!
var imageView = UIImageView(image: image)
imageView.frame = CGRectMake(view.bounds.width/2, view.bounds.height/2, view.bounds.width, view.bounds.height*(3/4))
self.view.addSubview(imageView)
}

func createButton() {
let size = view.bounds.width
let cx = view.bounds.width/2
let cy = view.bounds.height * 4/5
let button = UIButton();
button.frame = CGRectMake(0, 0, size, size)
button.center.x = cx
button.center.y = cy
button.setTitle("Load Image", forState: .Normal)
button.addTarget(self, action: "loadImageButtonPressed:", forControlEvents: .TouchUpInside)
self.view.addSubview(button)
}

func loadImageButtonPressed(sender: UIButton!) {
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary){
var imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary;
//imagePicker.mediaTypes = [kUTTypeImage];
imagePicker.allowsEditing = false
self.presentViewController(imagePicker, animated: true, completion: nil)
}
}

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
imageView.contentMode = .ScaleAspectFit
imageView.image = pickedImage
}
dismissViewControllerAnimated(true, completion: nil)
}

func imagePickerControllerDidCancel(picker: UIImagePickerController) {
dismissViewControllerAnimated(true, completion: nil)
}

}

最佳答案

我找到了答案!我意识到我已经启动了变量 imageView 两次(在类 EditViewController 和函数 createImageView() 中)。我删除了函数createImageView()中的imageView,并编辑了类中imageView的启动。我更新的代码是:

import UIKit

class EditViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {

var imageView = UIImageView(image: UIImage(named: "ClearImage"))

override func viewDidLoad() {
super.viewDidLoad()
}

override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
createBackground()
createImageView()
createButton()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func createBackground() {
let backgroundImage = UIImage(named: "pinetree")
var imageView: UIImageView!
imageView = UIImageView(frame: view.bounds)
imageView.contentMode = .ScaleAspectFill
imageView.clipsToBounds = true
imageView.image = backgroundImage
imageView.center = view.center
view.addSubview(imageView)
self.view.sendSubviewToBack(imageView)
}

func createImageView() {
imageView.frame = CGRectMake(0,0, view.bounds.width, view.bounds.height*(3/4))
self.view.addSubview(imageView)
}

func createButton() {
let size = view.bounds.width
let cx = view.bounds.width/2
let cy = view.bounds.height * 4/5
let button = UIButton();
button.frame = CGRectMake(0, 0, 200, 200)
button.center.x = cx
button.center.y = cy
button.setTitle("Load Image", forState: .Normal)
button.addTarget(self, action: "loadImageButtonPressed:", forControlEvents: .TouchUpInside)
self.view.addSubview(button)
}

func loadImageButtonPressed(sender: UIButton!) {
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary){
var imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary;
//imagePicker.mediaTypes = [kUTTypeImage];
imagePicker.allowsEditing = false
self.presentViewController(imagePicker, animated: true, completion: nil)
}
}

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
imageView.contentMode = .ScaleAspectFit
imageView.image = pickedImage
}
dismissViewControllerAnimated(true, completion: nil)
}


func imagePickerControllerDidCancel(picker: UIImagePickerController) {
dismissViewControllerAnimated(true, completion: nil)
}

}

关于swift - "fatal error: unexpectedly found nil while unwrapping an Optional value"用于 ImageView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34518388/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com