2017-09-14 41 views
2

我的代码bellow是使用picker视图来显示a和b的uitextfiled。我想要做的就是让所有使用outlet集合的文本字段具有相同的选择器视图。 Textfield是单个textField,MutlipleTextifeld是我想要使用的插座集合。我只想用mutlipleTextifield替换textField。在outlet集合文本框中使用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

帖子截图。为什么你使用cutler集合? – Vinodh

回答

1

首先设置pickerViewdataSourceDelegateselfViewController类。正如我看到你没有。所以,你会viewDidLoad()有些这样的:

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会是这样的:

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