Ios 在swift中使用多个uipickerviews和ui文本

Ios 在swift中使用多个uipickerviews和ui文本,ios,arrays,swift,Ios,Arrays,Swift,所以我尝试在一个视图中使用两个单独的选择器。第二组数据将根据第一个视图选择器中的选择进行更新。我的问题是,每次我在第二个视图选择器中选择某个对象时,它都会更改第一个视图选择器中的选择。在第二行中进行选择时,如何防止第一行中的数据发生变化 import UIKit class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate{ @IBOutlet weak var see: U

所以我尝试在一个视图中使用两个单独的选择器。第二组数据将根据第一个视图选择器中的选择进行更新。我的问题是,每次我在第二个视图选择器中选择某个对象时,它都会更改第一个视图选择器中的选择。在第二行中进行选择时,如何防止第一行中的数据发生变化

import UIKit

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate{


    @IBOutlet weak var see: UITextField!


    var pick = ["1", "2", "3", "4"]
    var picker = UIPickerView()
    var picker2 = UIPickerView()


    @IBOutlet weak var see2: UITextField!


    var viewone = ["1", "2", "3"]
    var viewtwo = ["1", "2", "3"]


    override func viewDidLoad() {
        super.viewDidLoad()
        picker.delegate = self
        picker.dataSource = self
        picker2.delegate = self
        picker2.dataSource = self
        see.inputView = picker
        see2.inputView = picker2
        picker.tag = 1
        picker2.tag = 2
    }

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

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        if pickerView.tag == 1 {
            return pick.count
        }else if pickerView.tag == 2{
            if see.text == "1"{
                return viewone.count
            }else if see.text == "2"{
                return viewtwo.count
            }else{
                return 1
            }
        }else{
            return 1
        }
    }

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        see.text = pick[row]

    }

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        if pickerView.tag == 1{
            return "\(pick[row])"
        }else if pickerView.tag == 2{
            if see.text == "1"{
                return "\(viewone[row])"
            }else if see.text == "2"{
                return "\(viewtwo[row])"
            }else{
                return nil
            }
        }else{
            return nil
        }
    }

仅当选定行位于第二个pickerview中时,才需要更改文本

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
   if(pickerView == picker2){ 
      see.text = pick[row]
   }
}

委托和数据源方法对于所有选择器视图都是相同的。不同之处在于传递给方法的pickerView参数

如果您只是在谈论保持选择器和数据分开,那么您可以这样做

if (pickerView == self.picker) {
    return _pickerData.count;
} else if (pickerView == self.picker2) {
    return _pickerData2.count;
} else if (pickerView == self.picker3) {
    return _pickerData3.count;
}

Im希望picker2的数据值根据picker中的选择进行更改。我可以正确填充,但当我在picker2中使用选择器时,它将更改我在picker中的选择。