2016-07-03 22 views
0

所以我試圖在一個視圖中使用兩個單獨的選擇器。第二組數據將根據第一個視圖選擇器中的選擇進行更新。我的問題是,每次我在第二個視圖選擇器中選擇某件東西時,它都會改變第一個視圖中的選擇。當我在第二行進行選擇時,如何保持數據的第一個變化。在swift中使用多個uipickerviews和ui文本

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 
     } 
    } 

回答

1

您需要更改文本僅在選定的行是第二pickerview

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

此擔任 如果(pickerView ==選擇器) –

0

的委託和數據源的方法是所有選擇器的看法相同。區別在於傳遞給方法的pickerView參數。

如果你只是在談論保持採摘和數據分開,那麼你可以做這樣的事情。

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

林想爲picker2取決於在選擇器選擇改變的數據值。我可以正確填充,但是當我在picker2中使用選擇器時,它會改變我在選擇器中的選擇。 –

相關問題