2016-09-06 4 views
1

Ich habe ein Problem mit Krankenhaus ViewPicker. Wenn der Benutzer auf das Textfeld Krankenhausname klickt, um den Namen des Krankenhauses aus viewPicker auszuwählen, lautet das Element show character "?" anstelle von Artikelnamen habe ich Bild Hinweis Ich benutze dieselbe Logik für Standort TextfeldPicker View ist Show Charakter "?" anstelle von Artikelname?

enter image description here

class VisitsViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate,UITextFieldDelegate, UIViewControllerTransitioningDelegate { 

     //MARK - 
     override func viewDidLoad() { 
      super.viewDidLoad() 
      self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(BrnViewController.dismissKeybored)))  
      self.pickerLocation.dataSource = self 
      self.pickerLocation.delegate = self 
      self.pickerLocation.tag = 1 
      self.pickerHospital.dataSource = self 
      self.pickerHospital.dataSource = self 
      self.pickerHospital.tag = 2 

      visitLocationTextField.inputView = pickerLocation 
      self.visitLocationTextField.delegate = self   
      hospitalNameTextField.inputView = pickerHospital 
      self.hospitalNameTextField.delegate = self 
     } 

      override func didReceiveMemoryWarning() { 
      super.didReceiveMemoryWarning() 
      // Dispose of any resources that can be recreated. 
     } 

     // MARK: - Picker View 
     func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
      return 1 
     } 

     func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
      if pickerView.tag == 1 { 
       return pickerDataVisitLocation.count 
      } 
      else{ 
       return pickerDataHospitalName.count 
      } 
     } 

     func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int){ 
      if pickerView.tag == 1{ 
       visitLocationTextField.text = pickerDataVisitLocation[row] 
      } 
      else{ 
       HospitalNameTextField.text = pickerDataHospitalName[row] 
      } 
     } 

     func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int)-> String? { 
      if pickerView.tag == 1{ 
      return pickerDataVisitLocation[row] 
      } 
      else{ 
       return pickerDataHospitalName[row] 
      } 
     } 
      //MARK: - @IBOutlet 
     @IBOutlet weak var visitLocationTextField: UITextField! 
     @IBOutlet weak var hospitalNameTextField: UITextField! 

      //MARK: - variables 
     var pickerDataVisitLocation = [" ","Home","Hospital","Other"] 
     var pickerDataHospitalName = [" ","test1","test2","test3"] 
     var pickerLocation = UIPickerView() 
     var pickerHospital = UIPickerView() 
    } 
+0

Fügen Sie einen Ausdruck in 'titleForRow' hinzu; druckt es die richtige Zeichenfolge? Ist diese Zeichenfolge optional? – Dopapp

+0

Ich bemerkte, dass Sie self.pickerHospital.dataSource = selbst zweimal gesetzt haben. Können Sie eine dieser Zeilen löschen und sehen, ob das das Problem verursacht hat? – scord

+0

Mögliches Duplikat von [PickerView erscheint als Fragezeichen anstelle von Daten?] (Http://stackoverflow.com/questions/26747115/pickerview-shows-up-as-question-marks-instead-of-data) – NightFury

Antwort

1

Sie haben anhängen nicht pickerHospital Delegierten festgelegt. Repliziert self.pickerHospital.dataSource = self zweimal. Sie sollten geschrieben haben:

self.pickerHospital.dataSource = self 
self.pickerHospital.delegate = self