由于某些原因,我无法将 UIPickerView
的数据源或委托(delegate)分配给我的 NSObject。
我有一个 NSObject
扩展了 UIPickerViewDataSource
和 UIPickerViewDelegate
class STRepeatPicker: NSObject, UIPickerViewDataSource, UIPickerViewDelegate {
let options = ["One", "Two", "Three", "Four", "Five"]
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return self.options.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return options[row]
}
}
我有一个 UIViewController
尝试设置数据源和委托(delegate)。它是 UITableViewCell
中的 UIPickerView
。
我在顶部创建对象:
let repeatPickerDataSource = STRepeatPicker()
然后在 cellForRowAt:
中,我尝试设置数据源和委托(delegate)。
let cell = tableView.dequeueReusableCell(withIdentifier: "pickerCell", for: indexPath) as! PickerTableViewCell
cell.picker.delegate? = repeatPickerDataSource
cell.picker.dataSource? = repeatPickerDataSource
return cell
当我运行它时它崩溃了,如果我调试并尝试打印出 cell.picker.delegate 我得到一个错误:Unexpectedly found nil while unwrapping an Optional value
有人知道如何将 UIPickerViewDelegate 和 UIPickerViewDataSource 分配给这样的 NSObject 吗?
最佳答案
问题是我没有正确注册我的手机,我将其注册为
self.tableView.register(UIPickerViewDelegate.self, forCellReuseIdentifier: "pickerCell")
应该是这样的:
self.tableView.register(UINib.init(nibName: "PickerTableViewCell", bundle: nil), forCellReuseIdentifier: "pickerCell")
关于ios - 无法分配 UIPickerView 委托(delegate)或数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54910221/