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:
- Tener un
UITextField
que muestre un texto seleccionado - Abrir un selector cuando el usuario haga clic en el
UITextField
- 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 seleccionaUITextField
- 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;
}
}