2016-05-23 96 views
0

我正在嘗試爲每個選定的文本框創建一個單獨的選擇器視圖。到目前爲止,我所得到的最接近的是每個文本框都有相同的pickerview,它們需要自己單獨的項目列表進行選擇。如何以編程方式創建多個選擇器

class MainViewController: UIViewController, UITextFieldDelegate, UIPickerViewDataSource, UIPickerViewDelegate { 

var dogBreedPickerArray = ["German Shepherd", "Huskie", "cray cray"] 
var catBreedPickerArray = ["savanna", "cheetoh", "bengal"] 
var maleFemalePickerArray = ["Male", "Female"] 

var dogBreedPicker = UIPickerView() 

var dogBreedPicker = UIPickerView() 
var catBreedPicker = UIPickerView() 
var maleFemalePicker = UIPickerView() 

@IBOutlet var dogBreedTextBox: UITextField! 
@IBOutlet var catBreedTextBox: UITextField! 
@IBOutlet var maleFemaleTextBox: UITextField! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    dogBreedPicker.delegate = self 
    dogBreedPicker.dataSource = self 
    dogBreedTextBox.inputView = dogBreedPicker 

    dogBreedTextBox.delegate = self 
          } 
// dog picker functions 
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
    return 1 
    } 
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return dogBreedPickerArray.count 
    } 
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    petBreedTextBox.text = dogBreedPickerArray[row] 
    } 
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    return dogBreedPickerArray[row] 
    } 
} 
+0

你可以在函數中使用if語句,而不是僅僅爲dogBreedPicker做。就像組件數量而不是僅返回1;如果dogBreedPicker - 返回1,否則如果catBreedPicker返回任何你想要的。爲所有你所擁有的func做到這一點。對於每個文本字段,請確保您使用您想要的選取器。 – Douglas

+0

使用單個選擇器並在textfld使用的基礎上加載內容if else else或切換到加載選擇器使用標籤上的內容以檢測您必須加載到選取器上的內容並重新加載選取器視圖的組件。 –

回答

0

它只是一個例子可能是它幫助你 選擇任何文本字段ASIGN文本字段標籤選擇器後並重新加載組件。

// variable 
var heightInch:[Int] = [Int]() 
var heightfeet:[Int] = [Int]() 
var heightCms:[Int] = [Int]() 
delegate methods 
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
     if picker.tag == 1{ 
      return 2 
     }else{ 
      return 1 
     } 
    } 

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     if picker.tag == 1{ 
      switch component { 
      case 0: 
       return heightfeet.count 
      default: 
       return heightInch.count 
      } 

     }else{ 
      return heightCms.count 
     } 
    } 
    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
     if picker.tag == 1{ 
      switch component { 
      case 0: 
       return String(heightfeet[row]) 
      default: 
       return String(heightInch[row]) 
      } 
     }else{ 
      return String(heightCms[row]) 
     }