pickerview how example data array ios swift uipickerview

ios - how - El campo de texto Mostrar UIPickerView está seleccionado, luego se oculta después de seleccionado



uipickerview set data (3)

¿Qué tal en su método didSelectRow que renunció en primer lugar?

func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int) { textfieldBizCat.text = bizCat[row] pickerBizCat.resignFirstResponder() }

Estoy tratando de crear un cuadro de texto que, cuando se selecciona, se abre un UIPickerView con opciones para seleccionar. Una vez seleccionado, el UIPickerView se oculta y el elemento seleccionado se muestra en el cuadro de texto. Probé diferentes piezas de código que encontré en línea, pero simplemente no puedo hacer que funcione. Si alguien puede sugerir un código completo para esto o decirme qué estoy haciendo mal en mi código, sería genial. Muchas gracias.

Aquí está mi código:

@IBOutlet var textfieldBizCat: UITextField! @IBOutlet var pickerBizCat: UIPickerView! = UIPickerView() var bizCat = ["Cat One", "Cat Two", "Cat Three"] override func viewDidLoad() { super.viewDidLoad() var bizCatCount = bizCat.count self.textfieldBizCat.inputView = pickerView } // returns the number of ''columns'' to display. func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int{ return 1 } // returns the # of rows in each component.. func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int{ return bizCat.count } func pickerView(pickerView: UIPickerView!, titleForRow row: Int, forComponent component: Int) -> String! { return bizCat[row] } func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int) { textfieldBizCat.text = "/(bizCat[row])" }


Si entendí bien tu pregunta, quieres:

  1. Tener un UITextField que muestre un texto seleccionado
  2. Abrir un selector cuando el usuario haga clic en el UITextField
  3. Cierre el selector cuando se selecciona un elemento (en el selector) y configúrelo en el campo `UITextField

Este es el código completo para administrarlo, solo tiene que vincular al delegado de su UITextField :

@IBOutlet var textfieldBizCat: UITextField! @IBOutlet var pickerBizCat: UIPickerView! = UIPickerView() var bizCat = ["Cat One", "Cat Two", "Cat Three"] override func viewDidLoad() { super.viewDidLoad() pickerBizCat.hidden = true; textfieldBizCat.text = bizCat[0] } // returns the number of ''columns'' to display. func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int{ return 1 } // returns the # of rows in each component.. func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int{ return bizCat.count } func pickerView(pickerView: UIPickerView!, titleForRow row: Int, forComponent component: Int) -> String! { return bizCat[row] } func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int) { textfieldBizCat.text = bizCat[row] pickerBizCat.hidden = true; } func textFieldShouldBeginEditing(textField: UITextField) -> Bool { pickerBizCat.hidden = false return false }

Lo que cambié de tu código:

  • Se utilizó UITextFieldDelegate para mostrar el selector cuando se selecciona UITextField
  • Oculte el selector una vez que se seleccione un elemento y configure el UITextField
  • Establezca la primera fila de su selector en el UITextField cuando se selecciona cualquier elemento

// pressing the button again would hide the uipickerview. when pressed the first time, update the button''s label to "done" , "hide" or whatever suits u! @IBAction func propertyTypeButtonPressed(sender: UIButton)/* the name of your button''s action*/ { count++; //declare it first ViewContainigPickerView.hidden = false self.view.endEditing(true) if (count == 2) { ViewContainingPickerView.hidden = true /* if you placed your picker on a separate view for simplicity*/ count = 0; } }