[英]Custom Class throwing error unexpectedly found nil while unwrapping an Optional value when using 2 different ViewControllers
I'm still new to swift so any help would be appreciated. 我仍然是新手,所以我们将不胜感激。
I have a simple set of pickerviews which are defined in 2 custom classes (ImageModelPicker and TimeModelPicker. When ever I load the ViewController that they are in directly there is no issue. When I load them after loading another (title screen) view controller their values throw: found nil while unwrapping an Optional value when using 2 different ViewControllers 我有一组简单的pickerviews,它们在2个自定义类(ImageModelPicker和TimeModelPicker)中定义。每当我加载直接位于它们的ViewController时,都没有问题。当我在加载另一个(标题屏幕)视图控制器之后加载它们时,它们的值抛出:使用两个不同的ViewController时解开一个可选值时发现nil
Here is the main code: 这是主要代码:
@IBOutlet weak var pickerImageView: UIPickerView! // image pickerview
var imageModelPicker: ImageModelPicker! // initializing
@IBOutlet weak var pickerTimeView: UIPickerView! //time pickerview
var timeModelPicker: TimeModelPicker! // initializing
override func viewDidLoad() {
super.viewDidLoad()
// image model picker
self.imageModelPicker = ImageModelPicker()
self.imageModelPicker.modelData = Data.getData()
//rotate frame and delegate pickerImageView
let rotationAngle = -90 * (Double.pi/180)
self.pickerImageView.delegate = imageModelPicker
self.pickerImageView.dataSource = imageModelPicker
pickerImageView.transform = CGAffineTransform(rotationAngle: CGFloat(rotationAngle))
pickerImageView.frame = CGRect(x: -100, y: (view.center.y) - 25, width: view.frame.width + 200, height: 50)
pickerImageView.selectRow(5, inComponent: 0, animated: true) // select default value
Actually, you are not initialize a variable by this code: 实际上,您不是通过以下代码初始化变量:
var imageModelPicker: ImageModelPicker!
As a result, you get an error, because you try to use nil instead of instance of the ImageModelPicker class. 结果,您得到一个错误,因为您尝试使用nil代替ImageModelPicker类的实例。
Try this code: 试试这个代码:
@IBOutlet weak var pickerImageView: UIPickerView! // image pickerview
var imageModelPicker = ImageModelPicker() // initializing
@IBOutlet weak var pickerTimeView: UIPickerView! //time pickerview
var timeModelPicker: TimeModelPicker! // initializing
override func viewDidLoad() {
super.viewDidLoad()
// image model picker
self.imageModelPicker.modelData = Data.getData()
//rotate frame and delegate pickerImageView
let rotationAngle = -90 * (Double.pi/180)
self.pickerImageView.delegate = imageModelPicker
self.pickerImageView.dataSource = imageModelPicker
pickerImageView.transform = CGAffineTransform(rotationAngle: CGFloat(rotationAngle))
pickerImageView.frame = CGRect(x: -100, y: (view.center.y) - 25, width: view.frame.width + 200, height: 50)
pickerImageView.selectRow(5, inComponent: 0, animated: true) // select default value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.