代码之家  ›  专栏  ›  技术社区  ›  Hussein

UIPickerView显示问号

  •  2
  • Hussein  · 技术社区  · 8 年前

    我试图在PickerView中显示血型,但由于某些原因,选项仅显示为问号!

    这是我的代码:

        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 回复  |  直到 8 年前
        1
  •  9
  •   Arnaud Wurmel    3 年前

    你的职能 titleForRow 应该像这样:

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
    

    你在pickerView之前忘记了一个“_”

        2
  •  1
  •   Lukas Mohs    6 年前

    斯威夫特4

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return pickerDataSource[row]
    }
    
        3
  •  0
  •   Doble N J    7 年前

    取而代之的是

    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] }