Невозможно назначить делегат UIPickerView или источник данных
Почему-то не могу назначить UIPickerView
Источник данных или делегат моего 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
который пытается установить источник данных и делегировать. Это UIPickerView
внутри UITableViewCell
,
Я создаю объект наверху:
let repeatPickerDataSource = STRepeatPicker()
а затем в cellForRowAt:
Я пытаюсь установить источник данных и делегировать.
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, как это?
1 ответ
Проблема заключалась в том, что я неправильно регистрировал свою камеру, я регистрировал ее как
self.tableView.register(UIPickerViewDelegate.self, forCellReuseIdentifier: "pickerCell")
когда это должно было быть так:
self.tableView.register(UINib.init(nibName: "PickerTableViewCell", bundle: nil), forCellReuseIdentifier: "pickerCell")