UIPickerView.selectedRowInComponent中“component”的含义是什么?

时间:2015-05-14 12:36:23

标签: ios swift uipickerview

在Xcode中使用Swift,我想:

1)一个PICKER,包含数组中的数据

2)BUTTON按下时会使用LABEL

中选定行的文字更新PICKER

目前我的代码:

var array = ["Sydney", "London", "Washington", "Tokyo", "San Francisco"]

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return array.count
}

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
    return array[row]
}

@IBOutlet weak var PICKER: UIPickerView!

@IBOutlet weak var LABEL: UILabel!

@IBAction func BUTTON(sender: AnyObject) {
    LABEL.text = array[PICKER.selectedRowInComponent(0)]
}

到目前为止一切正常。但我有两个问题:

1)我应该在PICKER.selectedRowInComponent中加上“0”吗?这是什么意思?因为没有数字或任何其他数字它不起作用。这不意味着只选择第一行(而不是选择用户选择的行)吗?

2)如何让PICKER默认显示数组的中间项,而不是应用加载时的第一项(例如Washington)?

2 个答案:

答案 0 :(得分:5)

采摘者可以有多个轮子(组件)。例如,您可能每个数字都有单独的轮子,或者您可能有日轮,月轮和年轮。它们从0开始编号。所以"组件0"只是第一个轮子(你只有一个)。

通过调用selectRow(inComponent:animated:)来完成选择行。

答案 1 :(得分:1)

UIPickerView可以有多个轮子(命名组件),并从0开始编号。例如,包含3个组件的选择器视图类似于以下3 components picker其中

  • 第一个轮子(" 6")是组件0
  • 第二轮(" 00")是组件1
  • 第三轮(" AM")是组件2

与问题标题无关,但选择一行是通过调用selectRow(_:inComponent:animated:)

完成的
var array = ["Sydney", "London", "Washington", "Tokyo", "San Francisco"]

// code...

yourPicker.selectRow(array.count/2, inComponent: 0, animated: true);