我有一个带有两个UIPickerViews的应用程序可以出现在UITableViewCell中:numberPicker和timePicker。它们从未同时出现在屏幕上,并且它们被声明为:
@IBOutlet weak var numberPicker: UIPickerView!
@IBOutlet weak var timePicker: UIPickerView!
根据正在使用的那个,在awakeFromNib中设置委托和数据源:
override func awakeFromNib() {
super.awakeFromNib()
if timePicker != nil {
timePicker.delegate = self
timePicker.dataSource = self
}
if numberPicker != nil {
numberPicker.delegate = self
numberPicker.dataSource = self
}
}
如果numberPicker是我试图展示的选择器,那么该应用程序运行没有问题。如果timePicker是我试图显示的选择器,则应用程序崩溃。设置断点后,这是崩溃的行:
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
if pickerView == numberPicker { <----- CRASHES HERE ----->
return 1
} else {
return 2
}
}
请记住,当codePicker尝试在屏幕上显示时,代码会起作用,而当timePicker尝试出现时,代码会崩溃。为什么会这样?在此先感谢您的帮助!
更新 以下是错误的屏幕截图
更新#2
我很抱歉不早点包括这个。我的日志窗口被最小化,我忽略了它,没有注意到。错误是:
致命错误:在解包可选值时意外发现nil