1

由于某种原因,我无法将UIPickerView的数据源或委托给我的 NSObject。

我有一个NSObject延伸UIPickerViewDataSourceUIPickerViewDelegate

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 ?

4

1 回答 1

0

问题是我没有正确注册我的手机,我将它注册为

self.tableView.register(UIPickerViewDelegate.self, forCellReuseIdentifier: "pickerCell")

什么时候应该是这样的:

self.tableView.register(UINib.init(nibName: "PickerTableViewCell", bundle: nil), forCellReuseIdentifier: "pickerCell")
于 2019-02-27T19:12:56.573 回答