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
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.
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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.