如何在 iOS 中连接选择器视图和标签?
Posted
技术标签:
【中文标题】如何在 iOS 中连接选择器视图和标签?【英文标题】:How to connect pickerviews and labels in iOS? 【发布时间】:2018-01-13 15:31:45 【问题描述】:我的ViewController
上有两个pickerView
和两个Label
。
问题是我如何将label
s 连接到pickerView
的数据数组(字符串类型)并显示在label
s 选择的pickerView 单元格中?
@IBOutlet weak var valuetype1: UILabel!
var pickerData: [String] = [String]()
override func viewDidLoad()
super.viewDidLoad()
self.picker1.delegate = self
self.picker1.dataSource = self
self.picker2.delegate = self
self.picker2.dataSource = self
pickerData = ["Годы", "Месяцы", "Недели", "Дни", "Часы", "Минуты"]
func numberOfComponents(in pickerView: UIPickerView) -> Int
return 1
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
return pickerData.count
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
return pickerData[row]
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
valuetype1.text = pickerData[row]
valuetype2.text = pickerData[row]
你怎么会看到我将标签 (valuetype(1..2)
) 连接到 pickerData
但它总是显示在两个 label
s 一个字符串中。我需要在pickerView1
中选择的第一个label
字符串中显示,在第二个label
中显示另一个字符串,在pickerView2
中选择。
【问题讨论】:
【参考方案1】:UIPickerViewDelegate
有一个名为pickerView(_:didSelectRow:inComponent:)
的方法。将此方法添加到您的 VC 类中。每当用户选择一行时,都会调用此方法。
您的实现应该与此有些相似。
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
valuetype1.text = pickerData[row]
更多信息请参考苹果文档:https://developer.apple.com/documentation/uikit/uipickerviewdelegate/1614371-pickerview
编辑:
当您将同一控制器用作多个 UIPickerView 的委托时,您可以通过比较 pickerView(_:didSelectRow:inComponent:)
方法上的 pickerView
参数来检查哪个选择器视图触发了方法调用。
试试这个:
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
if pickerView == picker1
valuetype1.text = pickerData[row]
else if pickerView == picker2
valuetype2.text = pickerData[row]
【讨论】:
以上是关于如何在 iOS 中连接选择器视图和标签?的主要内容,如果未能解决你的问题,请参考以下文章