2016-05-23 2 views
0

選択した各テキストボックスに対して別々のピッカービューを作成しようとしています。これまでに私が得た最も近いのは、選択する項目の個別のリストを必要とするテキストボックスごとに同じピッカービューを持つことです。複数のピッカービューをプログラムで作成する方法

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

dogBreedPickerの代わりに関数内でifステートメントを使用できますか?ちょうど1を返すのではなく、コンポーネントの数に似ています。 if dogBreedPicker - 1を返し、そうでない場合はcatBreedPickerが必要なものを返します。あなたが持っているすべての機能のためにそれを行います。また、各テキストフィールドについて、必要なピッカーを必ず使用してください。 – Douglas

+0

シングルピッカーを使用して、textfldのベースにコンテンツをロードするelse elseまたはswitchを使用してpicker useタグにコンテンツをロードして、ピッカーにロードするコンテンツを検出し、ピッカービューのコンポーネントをリロードします。 –

答えて

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]) 
     } 
関連する問題