在outlet集合文本框中使用pickerView
我的代码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)
}}
首先设置pickerView
的dataSource
和Delegate
到self
即ViewController
类。正如我看到你没有。所以,你会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)
}
输出故事板的
这就是它!在奖励奖励之前,我必须等待19个小时。 –
使用下面的代码在您的viewDidLoad方法。而已。!
let count : int = 0
for textField in mutlipleTextifeld {
textField.inputView = picker
textField.tag = count
count +=1
}
以一个全局变量在你的控制器名textFiledTag
每当你点击一个文本框下面的方法将被调用 -
textFieldDidBeginEditing
int该方法写下面一行
textFieldTag = textField.tag现在
您可以通过获取全球标签值的标签设置选择器视图的文本。
希望这有助于..!
帖子截图。为什么你使用cutler集合? – Vinodh