import UIKit
class FourthViewController: 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 = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6"] }
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//MARK: - Delegates and data sources
//MARK: Data Sources
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickerData.count
}
//MARK: Delegates
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.
}
*/
}错误:键入“FourthViewController”不符合协议“UIPickerViewDataSource”
只是为了测试一些特性,但我不明白问题所在
发布于 2016-09-04 20:51:49
正如您已经发现的,您需要实现numberOfComponents(in:)。
您的numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int需要更改为:
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}此外,您还需要修改pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?。
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return pickerData[row]
}发布于 2016-10-20 08:15:29
您必须遵守数据源协议:
public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int试试下面的代码:
//MARK: - Delegates and data sources
//MARK: Data Sources
public func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickerData.count
}
//MARK: Delegate
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return pickerData[row]
}发布于 2016-09-04 19:55:06
如果在UIPickerViewDataSource中确认该协议,则必须实现swift和UIPickerViewDelegate所需的所有方法。否则会在编译时产生错误。
https://stackoverflow.com/questions/39320751
复制相似问题