以编程方式创建和显示UIPickerView

时间:2014-07-19 03:14:14

标签: ios swift uipickerview

我正在尝试以编程方式创建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?

编辑:在扩展中添加断点不会停止程序,也不会调用它们。

3 个答案:

答案 0 :(得分:4)

我发现了问题 - 分配输入视图的代码不包括self。它应该读

self.textField.inputView = picker

答案 1 :(得分:2)

我不确定为什么你看不到选择器。但这是一种错误的方式。

使用以下方法创建实例:

 picker = UIPickerView.alloc()

在Swift中:

你应该使用:

picker = UIPickerView()

答案 2 :(得分:2)

在点击文本字段时,我遇到了同样的问题,试图让选择器视图显示出来。我的问题是由于某些原因我的iOS模拟器检查了“连接硬件键盘”。在iOS菜单中转到硬件 - >键盘并确保未选中“连接硬件键盘”。感觉愚蠢现在没有注意到任何键盘在应用程序中弹出几个小时,但希望这将有助于拯救别人的挫折感。

只是想添加一个编辑:在iOS模拟器中你可以尝试切换软件键盘(命令+ K)这对我来说也适用于这种情况并允许我保持硬件键盘连接。在假设您的代码不正确之前,请快速检查一下。