2016-04-12 42 views
1

seçerken, benim pickerView güncellemek gelmez Bu metin alanının dizisindeki bilgiler. Bir textfield hafifçe vurursanızGüncelleme UIPickerView satır Ben 3 textfields doldurmak için 3 farklı diziler kullanır ama bir textfield vurduğunuzda, başka textfield'ı Bir satır seçmek ve sonra doğrudan dokunun bir pickerView yarattık yeni UITextField

sonra pickerView kapatmak ve sonra günceller ve iyi çalışır başka textfield'ı dokunun uzakta dokunun.

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

Gereksinim duyduğunuz tüm kodlar bu olmalıdır. Başka bir şeye ihtiyacın olursa haberim olsun.

cevap

2

deneyin bu eklemek için:

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

ve 'Başlamadan mı Düzenleme' bağlayın yerine şu anda adlandırılan sürümün böylece (benim kod çok dibini görmek senin UITextField en

+0

olaylarını gönderdi Bu yöntemi ya da onunla özledin mi? –

+0

Evet, bunun yerine teşekkür ederiz –

+0

geçerli yöntemin! İşe yaradı. Temelde Bağlı Düzenleme Zaten yarattığı bireysel textfields ait IBActions Begin mı hariç için bana ne yaptı. –