2017-09-14 9 views
2

私のコードは、aとbを表示するためにピッカービューを使用するuitextfiledです。私がしたいのは、コンセントコレクションを使用しているすべてのテキストフィールドに同じピッカービューを表示させることだけです。 TextFieldは単一のtextFieldで、mutlipleTextifeldは使用したいアウトレットコレクションです。私は、textFieldをmutlipleTextifieldに置き換えたいだけです。コンセントコレクションのテキストフィールドにpickerViewを使用

 import UIKit 

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { 
let picker = UIPickerView() 
let country = ["a","b"] 

@IBOutlet var mutlipleTextifeld: [UITextField]! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    for textFieldObject in mutlipleTextifeld 
    { 
     textFieldObject.inputView = picker 
    }} 

public func numberOfComponents(in pickerView: UIPickerView) -> Int { 
    return 1 
} 
public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return country.count 
} 

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    return country[row] 
} 

public func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    mutlipleTextifeld.text = country[row] 

    self.view.endEditing(false) 
}} 

enter image description here

+0

ポストスクリーンショット:

override func viewDidLoad() { super.viewDidLoad() picker.delegate = self picker.dataSource = self print (textFields.count) for textFieldObject in textFields { textFieldObject.inputView = picker } } 

そして、あなたのfunc pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)delegate次のようになります。カトラコレクションを使った理由 – Vinodh

答えて

1

最初に、とDelegatepickerViewselfViewControllerクラスに設定します。私が見ているように、あなたはしていない。だからあなたのviewDidLoad()はややこのようになります:ストーリーボードの

public func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    for textField in textFields { 
     if textField.isEditing { 
      textField.text = country[row] 
     } 
    } 
    self.view.endEditing(false) 
} 

出力

enter image description here

+0

これはそれです!私は賞金を授与する前に19時間待たなければなりません。 –

2

あなたのviewDidLoadメソッドに次のコードを使用します。それでおしまい。!

let count : int = 0 
for textField in mutlipleTextifeld { 
    textField.inputView = picker 
    textField.tag = count 
    count +=1 
} 

次のメソッドが呼び出されますテキストフィールドをタップするたびに名前とtextFiledTag

をお使いのコントローラでグローバル変数を取る -

textFieldDidBeginEditing

int型をこの方法次の行を書きます。

textFieldTag = textField.tag

今、あなたは、グローバルタグ値とラベルを取得することにより、ピッカービューのテキストを設定することができます。

希望すると.. ..!

+0

ピッカーの値が選択されたときにテキストをテキストフィールドに設定する方法 – Vinodh

+0

テキストフィールドにタグを使用できます。 –

+0

コードを投稿できますか? – Vinodh

関連する問題