UIPickerView:在展开可选值时意外发现 nil

Posted

技术标签:

【中文标题】UIPickerView:在展开可选值时意外发现 nil【英文标题】:UIPickerView: unexpectedly found nil while unwrapping an Optional value 【发布时间】:2014-08-14 17:26:58 【问题描述】:

我正在尝试为我的应用程序实现 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]
    


希望你能帮助我!

【问题讨论】:

What does "fatal error: unexpectedly found nil while unwrapping an Optional value" mean?的可能重复 【参考方案1】:

您永远不会创建您的 UIPickerView 实例 - picker 应该标记为 @IBOutlet 并连接到您的故事板中,或者您应该在设置委托和数据源之前创建它。

【讨论】:

【参考方案2】:

关于这发生在哪一行的任何提示?我的猜测是picker.dataSource = self

您没有将此设置为插座,并且根据您共享的内容,它从未在任何地方初始化。

编辑以征求意见

所以你需要初始化选择器,你可以像初始化大多数东西一样使用它的标准 init() 方法。然后你需要告诉文本字段它的输入视图应该是选择器。

尝试将以下内容添加到viewDidLoad()

picker = UIPickerView()
textField.inputView = picker

【讨论】:

是的。它的“picker.dataSource = self”行。当在应用程序中编辑文本字段时,它应该弹出,所以我没有将它连接到插座。我该如何初始化它。在纪录片中没有找到初始化器的东西。感谢您的帮助! 已更新以解决您的评论

以上是关于UIPickerView:在展开可选值时意外发现 nil的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire:在展开可选值时意外发现 nil

prepareForSegue 出错“”在展开可选值时意外发现 nil“”

Swift 错误致命错误:在展开可选值时意外发现 nil

Alamofire 平面错误:在展开可选值时意外发现 nil

@IBInspectable 致命错误:在展开可选值时意外发现 nil

在展开可选值时迅速并意外发现 nil