Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从具有多个组件的pickView中获取精确值_Ios_Swift_Uipickerview - Fatal编程技术网

Ios 如何从具有多个组件的pickView中获取精确值

Ios 如何从具有多个组件的pickView中获取精确值,ios,swift,uipickerview,Ios,Swift,Uipickerview,我有一个PickerView和这样的标签: func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { if component == 0 { colorString = array[component][row] } else { numberString = array[compon

我有一个PickerView和这样的标签:

 func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if component == 0 {
            colorString = array[component][row]
        } else {
            numberString = array[component][row]
        }
        resultLabel.text = colorString + " " + numberString
    }

我想,当我更改组件中每一行的值时,它会将该值指定给上面的标签

例如:当我在第一个组件中选择“蓝色”,在第二个组件中选择“2”时,它将为标签指定“蓝色2”

我试过这样做,但效果不好,当我在第二个组件中选择第六个值时,它会崩溃:

import UIKit

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {

    @IBOutlet var colorLabel: UILabel!
    let colors = ["Red", "Green", "Blue", "Black", "White"]
    let numbers = ["One", "Two", "Three", "Four" ,"Five", "Six", "Seven"]
    var array = [[String]]()

    override func viewDidLoad() {
        super.viewDidLoad()
        array = [colors, numbers]
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
        return array.count
    }

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

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

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        colorLabel.text = component == 0 ? array[component][row] + " " + array[component][row] : array[component][row] + " " + array[component][row]
    }

}

我将这些线添加到ViewController的顶部

var colorString = ""
var numberString = ""
并按如下方式更改didSelectRow函数:

 func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if component == 0 {
            colorString = array[component][row]
        } else {
            numberString = array[component][row]
        }
        resultLabel.text = colorString + " " + numberString
    }
它现在运行良好

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

    var selectedValueFirstRow = pickerView.selectedRowInComponent(0)
    var selectedValueSecondRow = pickerView.selectedRowInComponent(1)

    colorLabel.text = colors[selectedValueFirstRow] + " " + numbers[selectedValueSecondRow]
}
您的代码正在崩溃,因为它超出了第一个数组的索引