如何在 iOS 中连接选择器视图和标签?

Posted

技术标签:

【中文标题】如何在 iOS 中连接选择器视图和标签?【英文标题】:How to connect pickerviews and labels in iOS? 【发布时间】:2018-01-13 15:31:45 【问题描述】:

我的ViewController 上有两个pickerView 和两个Label

问题是我如何将labels 连接到pickerView 的数据数组(字符串类型)并显示在labels 选择的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 但它总是显示在两个 labels 一个字符串中。我需要在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 中连接选择器视图和标签?的主要内容,如果未能解决你的问题,请参考以下文章

如何在另一个视图中使用已经初始化的类?

如何在swift 3.0中隐藏连接的segue中的标签栏

iOS 7 - 如何在表格视图中显示日期选择器?

在添加另一个选择器视图之前,我如何检查超级视图中是不是还有其他选择器视图?

如何在 iOS 上获取模板选择器/文档浏览器视图?

如何在iOS swift中实现带有月份、日期和时间的自定义选择器?