在我的ViewController中,我有15个PickerView和15个文本字段。在文本字段编辑确实开始功能我正在创建适当的选择器视图。在我的viewDidLoad方法中,首先我将使用以下代码为其委托和数据源提供。
self.firstPicker = UIPickerView(frame:CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 216))
self.firstPicker.delegate = self
self.firstPicker.dataSource = self
//When text field editing did begin function called following is executing.
func pickUpFirstPicker(_ textField : UITextField) {
self.kodPicker.backgroundColor = UIColor.white
textField.inputView = self.kodPicker
// ToolBar
let toolBar = UIToolbar()
toolBar.barStyle = .default
toolBar.isTranslucent = true
toolBar.tintColor = UIColor(red: 92/255, green: 216/255, blue: 255/255, alpha: 1)
toolBar.sizeToFit()
// Adding Button ToolBar
let doneButton = UIBarButtonItem(title: "OK", style: .plain, target: self, action: #selector(FiltreVC.pickerDoneClick))
let spaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let cancelButton = UIBarButtonItem(title: "CANCEL", style: .plain, target: self, action: #selector(FiltreVC.pickerCancelClick))
toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
toolBar.isUserInteractionEnabled = true
textField.inputAccessoryView = toolBar
}
@objc func pickerDoneClick() {
// 400 lines of if else statement
if (Services.list[sampleIndex].pageName == "XYZ" ||
Services.list[sampleIndex].pageName == "ABC") {
if (selected == 1) {
//
firstView.isHidden = true
secondView.isHidden = true
thirdView.isHidden = false
} else if (selected == 2) {
firstView.isHidden = false
secondView.isHidden = false
thirdView.isHidden = true
firstPicker.selectRow(0, inComponent: 0, animated: true)
pickerDoneClick()
}
}
}
在给出选择器视图的委托和数据源之后,我正在调用一个函数(仍然在我的viewDidLoad中),它是大约400行if-else语句。根据正确的if语句,它选择一个具有selectRow函数的选择器,然后它调用我上面提到的函数pickerDoneClick。如果我在我的选择器按钮完成点击中使用pickerDoneClick功能,它运行良好。但是,如果我在viewDidLoad中使用它,它会给我错误线程1: EXC_BAD_ACCESS(code = 1,address = 0x16fc5da60)。此外它在模拟器中工作正常没有问题,但在实际设备中它给我一个错误。可能是什么原因以及如何解决?