2017-07-04 2 views
1

Pourquoi le contrôleur de vue ne conforme-t-il pas UIPickerViewDataSource?Non conforme au protocole "UIPickerViewDataSource"

J'ai vérifié tout ce que je pouvais faire pour le déboguer du web.

J'ai tapé toutes les fonctions nécessaires pour les protocoles (Swift 3.1) mais en vain.

Voici mon code:

class SelectClassViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { 
    let grades = ["7", "8", "9", "10", "11", "12"] 

    var selectCurrentGrade : String? = nil 

    @IBOutlet weak var Grade: UIPickerView! 

    @IBAction func Next(_ sender: Any) { 
     if selectCurrentGrade != nil { 
      performSegue(withIdentifier: "GradeToClass", sender: self) 
     } 
    } 

    @IBAction func Back(_ sender: Any) { 
     performSegue(withIdentifier: "GradeToMain", sender: self) 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

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

     func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
      return grades[row] 
     } 

     func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
      return grades.count 
     } 

     func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
      selectCurrentGrade = grades[row] 
     } 
    } 
} 

Répondre

0

Vos fonctions sont à l'intérieur viewDidLoad, les déplacer à l'extérieur et ça va marcher