I have protocols:
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
I have data:
let muteForPickerData = ["minute(s)","hour(s)"]
In viewDidLoad
I have:
muteForPicker.delegate = self
muteForPicker.dataSource = self
Then I have required methods:
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return muteForPickerData.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return muteForPickerData[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
}
Still I get
type viewcontroller does not conform to protocol UIPickerViewDataSource
UIPickerViewDataSource
methodnumberOfComponentsInPickerView
is changed in Swift 3 like this that is the reason you are getting this error.For more detail read Apple Documentation on
UIPickerView
.Note: You need to also add
_
as first parameter label same like other methods in yourUIPickerViewDelegate
method that istitleForRow
anddidSelectRow
.Details
Xcode 9.2, Swift 4
Fast KIT to use UIPickerView
Full sample
Result