多个选择器视图

Multiple Pickerviews

我想构建一个 viewcontroller,其中包含三个 pickerview(具有三个相同的选项)。我在如何向标签显示特定行时遇到问题。我的代码:

我更改了其他部分仍然出错。将变量的首字母编辑为小写。

@IBOutlet weak var picker1: UIPickerView!

@IBOutlet weak var picker2: UIPickerView!

@IBOutlet weak var picker3: UIPickerView!

var Array  = ["Shake","Swipe Up","Swipe Right"]



@IBOutlet weak var label1: UILabel!

@IBOutlet weak var label2: UILabel!

@IBOutlet weak var label3: UILabel!

var placementAnswer = 0

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    picker1.delegate = self
    picker1.dataSource = self
    picker1.tag = 1

    picker2.delegate = self
    picker2.dataSource = self
    picker2.tag = 2

    picker3.delegate = self
    picker3.dataSource = self
    picker3.tag = 3

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.

}

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

}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return Array.count
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {

    return 1
}

@IBAction func save3(_ sender: AnyObject) {
}

@IBAction func save2(_ sender: AnyObject) {
}

@IBAction func save1(_ sender: AnyObject) {


    if (placementAnswer == 0){
        label1.text = "Shake"
    }

    else if(placementAnswer == 1){
        label1.text = "Swipe Up"

    }
    else{
        label1.text = "Swipe Right"
    }


    if (placementAnswer == 0){
        label2.text = "Shake"
    }

    else if(placementAnswer == 1){
        label2.text = "Swipe Up"

    }
    else{
        label2.text = "Swipe Right"

    }
    if (placementAnswer == 0){
        label3.text = "Shake"

    }
    else if(placementAnswer == 1){
        label3.text = "Swipe Up"

    }
    else{
        label3.text = "Swipe Right"
    }
}

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    picker1.delegate = self
    picker1.dataSource = self
    picker1.tag = 1

    picker2.delegate = self
    picker2.dataSource = self
    picker1.tag = 2

    picker3.delegate = self
    picker3.dataSource = self
    picker1.tag = 3

}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    if pickerView.tag == 1 {
        // do things for pickerview 1
        label1.text = row
    }
    else if pickerView.tag == 2 {
        // do things for pickerview 2
        label2.text = row
    }else {
        // do for pickerview 3
    }

    placementAnswer = row
}
}

使用tag

区分
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    picker1.delegate = self
    picker1.dataSource = self
    picker1.tag = 1

    picker2.delegate = self
    picker2.dataSource = self
    picker1.tag = 2

    picker3.delegate = self
    picker3.dataSource = self
    picker1.tag = 3
}

因此在您的委托方法中只需检查标记

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

}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    if pickerView.tag == 1 {
        // do things for pickerview 1
        Label1.text = Array[row]
    }
    else if pickerView.tag == 2 {
        // do things for pickerview 2
        Label2.text = Array[row]
    }else {
        // do for pickerview 3
    }
}

给你@h44f33z。如何使每个部分相互依赖?例如,如果我为行为名称 1 选择 "shake",则行为名称 2 和 3 将不可用。每个行为名称部分将有一个对应的操作。谢谢!