2016-12-08 6 views
1

Я пытаюсь отобразить тип крови в PickerView, но по какой-либо причине выбор отображается только как вопросительные знаки!UIPickerView display question mark

Вот мой код:

class RegisterViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { 
    //Methods for PickerViewDataSource 

    @available(iOS 2.0, *) 
    public func numberOfComponents(in pickerView: UIPickerView) -> Int { 
     return 1 
    } 
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     return pickerDataSource.count; 
    } 

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

    @IBOutlet weak var selectedDate: UILabel! 
    @IBOutlet weak var birthDatePicker: UIDatePicker! 

    @IBOutlet weak var mobileNumberField: UITextField! 
    @IBOutlet weak var emailField: UITextField! 
    @IBOutlet weak var nameField: UITextField! 

    @IBOutlet weak var bloodTypePicker: UIPickerView! 

    @IBOutlet weak var selectedType: UILabel! 

    let pickerDataSource = ["Group A", "Group B", "Group AB", "Group O"]; 


    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view. 
     super.viewDidLoad() 
     self.bloodTypePicker.dataSource = self; 
     self.bloodTypePicker.delegate = self; 

    } 

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) 
    { 
     if(row == 0) 
     { 
      self.selectedType.text = "Group A" 
     } 
     else if(row == 1) 
     { 
      self.selectedType.text = "Group B" 
     } 
     else if(row == 2) 
     { 
      self.selectedType.text = "Group AB" 
     } 
     else 
     { 
      self.selectedType.text = "Group O" 
     } 
    } 

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

    @IBAction func datePickerAction(_ sender: Any) { 

     var dateFormatter = DateFormatter() 
     dateFormatter.dateFormat = "dd-MM-yyyy" 
     var strDate = dateFormatter.string(from: birthDatePicker.date) 
     self.selectedDate.text = strDate 

    } 

} 

и вот скриншот того, что отображается:

enter image description here

Я после этого учебника: http://sourcefreeze.com/ios-uipickerview-example-using-swift/

Спасибо заранее.

ответ

3

Ваша функция titleForRow должна быть, как этот:

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?. You forgot a '_' before pickerView:

0

вместо этого

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

дают

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

Смежные вопросы