?尝试将数据源加载到 UIPickerView 时返回

? returned when trying to load data source into UIPickerView

我正在尝试将 1 - 15 加载到选择器视图中,但使用我的代码,它 return 15 个问号。我在下面的代码中做错了什么?我遵循了它的指南,但这似乎不起作用。它一定是一些小东西,我必须进行调整才能完成这项工作。

class NewDaySplitViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

@IBOutlet weak var picker: UIPickerView!

var pickerData: [String] = [String]()

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

    self.picker.delegate = self
    self.picker.dataSource = self

    pickerData = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"]
}

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

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

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

// The data to return for the row and component (column) that's being passed in
private func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return pickerData[row]
}


/*
// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
}
*/

您的委托方法 titleForRow 签名不正确。

尝试使用Xcode auto-complete:

开始输入选择器...

然后会出现一个列表:

Select titleForRow 方法,按回车键并输入您的代码:

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

签名错误:

该方法不是私有的,您没有 _ 作为第一个参数。