【发布时间】:2014-07-19 03:14:14
【问题描述】:
我正在尝试以编程方式创建 UIPickerView 并将其显示为文本字段的 firstResponder,但是,选择器视图未显示。 textField 已连接到界面构建器中的对象,但 pickerView 是以编程方式创建的。
class View: UIViewController {
@IBOutlet var picker : UIPickerView = UIPickerView.alloc()
@IBOutlet var textField : UITextField = nil
override func viewDidLoad() {
super.viewDidLoad()
picker = UIPickerView()
picker.delegate = self
picker.dataSource = self
picker.backgroundColor = UIColor.blackColor()
textField.inputView = picker
}
}
extension View: UIPickerViewDataSource {
func numberOfComponentsInPickerView(colorPicker: UIPickerView!) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int {
return 5
}
}
extension View: UIPickerViewDelegate {
func pickerView(pickerView: UIPickerView!, titleForRow row: Int, forComponent component: Int) -> String!
{
return "Text"
}
}
为什么我在运行应用时看不到这个pickerView?
编辑:在扩展中添加断点不会停止程序,它们不会被调用。
【问题讨论】:
-
在您的
viewDidLoad中,将var picker : UIPickerView = ...更改为picker = ...。您正在创建一个本地(和临时)选择器。 -
我现在在该行上遇到三个错误:一行上的连续语句必须用';'分隔,预期表达式和表达式解析为未使用的左值
-
如果我删除该行,我会在运行时收到一个致命错误:Can't unwrap optional.none
-
UIPickerView.alloc()现在已弃用,只需使用UIPickerView()代替 -
两者都可以通过编程方式创建。这是well documented example in Objective C.
标签: ios swift uipickerview