Programmatically Create and Show UIPickerView

老子叫甜甜 提交于 2019-12-06 01:04:19

问题


I am attempting to create a UIPickerView programmatically and display it as the firstResponder of a textfield, however, the picker view is not showing up. textField is connected to an object in the interface builder, but pickerView is being created programatically.

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"
    }
}

Why can't I see this pickerView when I run the app?

Edit: Adding a breakpoint inside the extensions does not stop the program, they are not being called.


回答1:


I found the problem-the code for assigning the input view doesn't include self. It should read

self.textField.inputView = picker



回答2:


I was having the same problem trying to get the picker view to show up when clicking in the textfield. My issue was that for some reason my iOS simulator had the "Connect Hardware Keyboard" checked. In the iOS menu go to Hardware -> Keyboard and make sure "Connect Hardware Keyboard" is unchecked. Feels dumb now not noticing any keyboard was popping up in the app for several hours but hopefully this will help save someone else the frustration.

Just wanted to add an edit: In the iOS simulator you can try toggling the software keyboard (command+K) This worked for me as well in this case and allowed me to keep the hardware keyboard connected. Just something to check quickly before assuming your code is incorrect.




回答3:


I'm not sure why you cannot see the picker. But it's a wrong way.

To create an instance using:

 picker = UIPickerView.alloc()

In Swift:

you should use:

picker = UIPickerView()


来源:https://stackoverflow.com/questions/24836369/programmatically-create-and-show-uipickerview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!