テキストボックスを作成しようとしていますが、それを選択するとUIPickerViewが開き、選択できる選択肢が表示されます。選択すると、UIPickerViewは非表示になり、選択したアイテムがテキストボックスに表示されます。オンラインで見つけたさまざまなコードを試してみましたが、うまく動作しません。誰かがこのための完全なコードを提案したり、自分のコードで間違っていることを教えてくれたりすると、それはとても素晴らしいことです。本当にありがとう。
ここに私のコードがあります:
@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])"
}
私があなたの質問をよく理解したら、あなたは欲しい:
UITextField
を持っているUITextField
をクリックしたときにピッカーを開くこれはそれを管理するための完全なコードです。あなたの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
}
あなたのコードから変更したこと:
UITextFieldDelegate
が選択されたときにピッカーを表示するためにUITextField
を使用しましたUITextField
をセットアップしますUITextField
に設定します // 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;
}
}
DidSelectRowメソッドでresignFirstResponderについてはどうですか?
func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int)
{
textfieldBizCat.text = bizCat[row]
pickerBizCat.resignFirstResponder()
}