iOS picker view
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
import UIKit class ViewController: UIViewController { @IBOutlet weak var editTxt: UITextField! var colorList:[String] = ["Red", "Green", "Blue"] var tmpSelect = "" override func viewDidLoad() { super.viewDidLoad() pickerViewInit() // Do any additional setup after loading the view, typically from a nib. } } extension ViewController: UIPickerViewDelegate, UIPickerViewDataSource { //picker func pickerViewInit( ){ //Create a parent view for UIPickerView let pickerViewWrpper = UIView(frame: CGRect(x:0, y: 200,width: view.frame.width,height: 200)) pickerViewWrpper.backgroundColor = .clear //create UIPickerView object let picker = UIPickerView( ) picker.backgroundColor = .clear //add UIPickerView into parent view pickerViewWrpper.addSubview(picker) //add some constraint to UIPickerView picker.translatesAutoresizingMaskIntoConstraints = false picker.leadingAnchor.constraint(equalTo: pickerViewWrpper.leadingAnchor, constant: 0).isActive = true picker.trailingAnchor.constraint(equalTo: pickerViewWrpper.trailingAnchor, constant: 0).isActive = true picker.bottomAnchor.constraint(equalTo: pickerViewWrpper.bottomAnchor, constant: 0).isActive = true picker.heightAnchor.constraint(equalToConstant: 170).isActive = true //set data source and other stuff picker.showsSelectionIndicator = true picker.delegate = self picker.dataSource = self //create UIToolbar object let toolBar = UIToolbar() //add UIToolbar into parent view pickerViewWrpper.addSubview(toolBar) //add some constraint to UIToolbar toolBar.translatesAutoresizingMaskIntoConstraints = false toolBar.leadingAnchor.constraint(equalTo: pickerViewWrpper.leadingAnchor, constant: 0).isActive = true toolBar.trailingAnchor.constraint(equalTo: pickerViewWrpper.trailingAnchor, constant: 0).isActive = true toolBar.topAnchor.constraint(equalTo: pickerViewWrpper.topAnchor, constant: 0).isActive = true toolBar.heightAnchor.constraint(equalToConstant: 30).isActive = true //add some style to UIToolbar toolBar.barStyle = UIBarStyle.default toolBar.isTranslucent = true // toolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1) toolBar.sizeToFit() //int done and cancelButton buttons let doneButton = UIBarButtonItem(title: "Select", style: UIBarButtonItemStyle.plain, target: self, action: #selector(donePicker)) let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil) let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.plain, target: self, action: #selector(cancelPicker)) toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false) toolBar.isUserInteractionEnabled = true //set inputView when we enter in text field this view will show insted of keyboard editTxt.inputView = pickerViewWrpper } @objc func donePicker(){ editTxt.resignFirstResponder() editTxt.text = tmpSelect } @objc func cancelPicker(){ editTxt.resignFirstResponder() } //-picker //pickerView //***************************************************** func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return colorList.count } func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return colorList[row] } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { tmpSelect = colorList [row] } //***************************************************** //End pickerView } |