2016-04-12 9 views
1

3つの異なる配列を使用して3つのテキストフィールドを作成するpickerViewを作成しましたが、1つのテキストフィールドをタップして行を選択してから別のテキストフィールドを直接タップすると、そのテキストフィールドの配列内の情報新しいUITextFieldを選択するとUIPickerViewの行が更新されます

テキストフィールドをタップしてタップすると、ピッカービューが閉じられ、別のテキストフィールドをタップして更新して正常に動作します。

var teams = [String]() 
var schedules = ["A","B"] 
var services = ["9AM","12PM","5PM"] 
var pickerView:UIPickerView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     pickerView.delegate = self 
     pickerView.dataSource = self 

     teamTextField.inputView = self.pickerView 
     serviceTextField.inputView = self.pickerView 
     scheduleTextField.inputView = self.pickerView 
    } 

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

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     if teamTextField.isFirstResponder() { 
      return teams.count 
     } 
     else if scheduleTextField.isFirstResponder() { 
      return schedules.count 
     } 
     else { 
      return services.count 
     } 

    } 

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
     if teamTextField.isFirstResponder() { 
      return teams[row] 
     } 
     else if scheduleTextField.isFirstResponder() { 
      return schedules[row] 
     } 
     else { 
      return services[row] 
     } 
    } 

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
     if teamTextField.isFirstResponder() { 
      let itemSelected = teams[row] 
      teamTextField.text = itemSelected 
     } 
     else if scheduleTextField.isFirstResponder() { 
      let itemSelected = schedules[row] 
      scheduleTextField.text = itemSelected 
     } 
     else if serviceTextField.isFirstResponder() { 
      let itemSelected = services[row] 
      serviceTextField.text = itemSelected 
     } 

    } 

    func textFieldDidBeginEditing(textField: UITextField) { 
     pickerView.reloadAllComponents() 
    } 

必要なコードはすべて必要です。他に必要なものがあれば教えてください。この追加する

答えて

2

試してみてください。

@IBAction func textFieldDidBeginEditing(sender: AnyObject) { 
    pickerView.reloadAllComponents() 
} 

をし、「編集作業を開始しました」にそれを接続するには、あなたのUITextFieldの

+0

のイベントを送ったので、その代わりに、現在と呼ばれるバージョンは、(あれば私のコードの一番下を参照してくださいあなたはそれを逃した)その方法のそれかそれとも? –

+0

はい、現在のメソッドの代わりに –

+0

ありがとうございます!出来た。私は基本的に、私がすでに作成したテキストフィールドのIBActionsにEdited Did Beginを接続する以外は、あなたが私に言ったことをしました。 –

関連する問題