【问题标题】:UIPickerView: unexpectedly found nil while unwrapping an Optional valueUIPickerView:在展开可选值时意外发现 nil
【发布时间】: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]
    }

}

希望你能帮助我!

【问题讨论】:

标签: ios swift uipickerview


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    编辑以征求意见

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

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

    picker = UIPickerView()
    textField.inputView = picker
    

    【讨论】:

    • 是的。它的“picker.dataSource = self”行。当在应用程序中编辑文本字段时,它应该弹出,所以我没有将它连接到插座。我该如何初始化它。在纪录片中没有找到初始化器的东西。感谢您的帮助!
    • 已更新以解决您的评论
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 2016-10-18
    • 2017-04-09
    • 2018-09-22
    • 2016-06-26
    • 2016-03-12
    相关资源
    最近更新 更多