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中的选择。