我正在尝试以编程方式创建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?
编辑:在扩展中添加断点不会停止程序,也不会调用它们。
答案 0 :(得分:4)
我发现了问题 - 分配输入视图的代码不包括self。它应该读
self.textField.inputView = picker
答案 1 :(得分:2)
我不确定为什么你看不到选择器。但这是一种错误的方式。
使用以下方法创建实例:
picker = UIPickerView.alloc()
在Swift中:
你应该使用:
picker = UIPickerView()
答案 2 :(得分:2)
在点击文本字段时,我遇到了同样的问题,试图让选择器视图显示出来。我的问题是由于某些原因我的iOS模拟器检查了“连接硬件键盘”。在iOS菜单中转到硬件 - >键盘并确保未选中“连接硬件键盘”。感觉愚蠢现在没有注意到任何键盘在应用程序中弹出几个小时,但希望这将有助于拯救别人的挫折感。
只是想添加一个编辑:在iOS模拟器中你可以尝试切换软件键盘(命令+ K)这对我来说也适用于这种情况并允许我保持硬件键盘连接。在假设您的代码不正确之前,请快速检查一下。