我正在尝试将UIPickerView实现到我的应用程序中。虽然我没有收到错误,但是当我运行应用程序时,它崩溃并出现以下错误:
在解包可选值时意外发现nil
class LobbyViewController: UIViewController {
@IBOutlet weak var textfield: UITextField!
var picker: UIPickerView!
var radius = [2, 5, 10, 15, 20, 25, 50, 100, 1000]
override func viewDidLoad() {
super.viewDidLoad()
picker.dataSource = self
picker.delegate = self
self.textfield.inputView = picker
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
extension LobbyViewController: UIPickerViewDataSource {
func numberOfComponentsInPickerView(picker: UIPickerView!) -> Int
{
return 1
}
func pickerView(picker: UIPickerView!, numberOfRowsInComponent component: Int) -> Int{
return radius.count
}
}
extension LobbyViewController: UIPickerViewDelegate{
func pickerView(umkreisPicker: UIPickerView!, titleForRow row: Int, forComponent component: Int) -> String {
return radius[row]
}
}
希望你能帮助我!
答案 0 :(得分:2)
您永远不会创建UIPickerView
个实例 - picker
应标记为@IBOutlet
并挂钩在您的情节提要中,或者您应该在设置委托和数据之前创建它源。
答案 1 :(得分:1)
有关这条线发生的任何提示?我的猜测是picker.dataSource = self
您没有将此设置为插座,并且根据您分享的内容,它从未在任何地方初始化。
编辑评论
所以你需要初始化选择器,你可以像初始化大多数东西一样,用它的标准init()方法。然后你需要告诉文本字段它的输入视图应该是选择器。
尝试将以下内容添加到viewDidLoad()
picker = UIPickerView()
textField.inputView = picker