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

时间:2014-08-14 17:26:59

标签: ios swift uipickerview

我正在尝试将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]
    }

}

希望你能帮助我!

2 个答案:

答案 0 :(得分:2)

您永远不会创建UIPickerView个实例 - picker应标记为@IBOutlet并挂钩在您的情节提要中,或者您应该在设置委托和数据之前创建它源。

答案 1 :(得分:1)

有关这条线发生的任何提示?我的猜测是picker.dataSource = self

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

编辑评论

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

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

picker = UIPickerView()
textField.inputView = picker