具有多个文本字段输入视图的多个选取器视图 Swift
Posted
技术标签:
【中文标题】具有多个文本字段输入视图的多个选取器视图 Swift【英文标题】:Multiple pickerviews with multiple textfield inputviews Swift 【发布时间】:2014-10-21 13:44:50 【问题描述】:我一直在论坛中搜索,但没有任何帮助。 我在一个视图控制器中使用 4 个文本字段,对于每个文本字段,我使用单独的 pickerView 作为 textFields (4pickers) 的 inputViews。
当我点击第一个 textField 时,pickerView1 成功出现,并且 textfield 显示数据,但是当我点击第二个、第三个和第四个 textfield 时,出现第一个 pickerView。 我怀疑错误在于 inputView 声明。
如果您能帮助在 pickerView 中添加“完成”按钮,我将不胜感激。
我的代码:
class ViewController1: UIViewController, UIPickerViewDelegate
@IBOutlet var pickerView1: UIPickerView!
@IBOutlet var pickerView2: UIPickerView!
@IBOutlet var pickerView3: UIPickerView!
@IBOutlet var pickerView4: UIPickerView!
@IBOutlet var textField1: UITextField!
@IBOutlet var textField2: UITextField!
@IBOutlet var textField3: UITextField!
@IBOutlet var textField4: UITextField!
var hazards = ["a","b", "c"]
var reasons = ["d", "e", "f"]
var site = ["v","h","i","j"]
var line = ["k", "l","m", "n"]
override func viewDidLoad()
super.viewDidLoad()
pickerView1 = UIPickerView()
pickerView2 = UIPickerView()
pickerView3 = UIPickerView()
pickerView4 = UIPickerView()
pickerView1.delegate = self
pickerView2.delegate = self
pickerView3.delegate = self
pickerView4.delegate = self
self.textField1.inputView = self.pickerView1;
self.textField2.inputView = self.pickerView2;
self.textField3.inputView = self.pickerView3;
self.textField4.inputView = self.pickerView4;
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int
return 1
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
if pickerView.tag == 0
return hazards.count
else if pickerView.tag == 1
return reasons.count
else if pickerView.tag == 2
return site.count
else if pickerView.tag == 3
return line.count
return 1
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String!
if pickerView.tag == 0
return hazards[row]
else if pickerView.tag == 1
return reasons[row]
else if pickerView.tag == 2
return site[row]
else if pickerView.tag == 3
return line[row]
return ""
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
if pickerView.tag == 0
textField1.text = hazards[row]
else if pickerView.tag == 1
textField2.text = reasons[row]
else if pickerView.tag == 2
textField3.text = site[row]
else if pickerView.tag == 3
textField4.text = line[row]
【问题讨论】:
这里是开始添加完成按钮的地方:blog.swierczynski.net/2010/12/… 【参考方案1】:您正在使用选择器视图的tag
属性来决定哪个数组是给定选择器视图的数据源,但您最初没有设置标签。 tag
默认为零,因此所有四个选择器视图都显示相同的数据。实例化您的选择器视图后,添加以下内容:
pickerView1.tag = 0
pickerView2.tag = 1
pickerView3.tag = 2
pickerView4.tag = 3
【讨论】:
我已经使用 xcode 为 pickerviews 设置了标签,我确信它们会显示不同的数据,就像我删除 inputview 调用一样,并在页面上显示选择器,它们会显示不同的数据。该教程也在目标 C 中,我不明白。 您的意思是在情节提要中设置标签吗?当您创建新的选择器视图(即,使用此代码:pickerView1 = UIPickerView()
)时,该设置不适用。
谢谢!!!有效!我在属性检查器中设置了标签,但没有在代码中设置。
你能帮我谈谈如何将教程中的代码转换为完成按钮吗??以上是关于具有多个文本字段输入视图的多个选取器视图 Swift的主要内容,如果未能解决你的问题,请参考以下文章
如何在一个视图中将一个 UIPickerView 用于多个文本字段?