Reputation:
My UIPickerView with four components gives me this back when I'm trying to build it. What should I do I mean I made the number Of Rows one Point bigger because in Swift numbers start at 0 but nothing worked.... What is the problem?
let componentOne = [1...1000]
let componentTwo = [1...59]
let componentThree = [1...59]
let componentFour = [1...10]
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 4
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if component == 0 {
return 1000
}
if component == 1 {
return 59
}
if component == 2 {
return 59
}
if component == 3 {
return 10
}
return component
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if component == 0 {
_ = componentOne[row]
return "\(1000)"
}
if component == 1 {
_ = componentTwo[row]
return "\(59)"
}
if component == 2 {
_ = componentThree[row]
return "\(59)"
}
if component == 3 {
_ = componentFour[row]
return "\(10)"
}
return nil
}
Upvotes: 0
Views: 109
Reputation: 285059
Consider that [1...10]
is an array of one range, not an array of 10 integers.
You have to write
let componentOne = Array(1...1000)
let componentTwo = Array(1...59)
let componentThree = Array(1...59)
let componentFour = Array(1...10)
To avoid those errors don't hard-code the return values of numberOfRowsInComponent
.
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
switch component {
case 0: return componentOne.count
case 1: return componentTwo.count
case 2: return componentThree.count
case 3: return componentFour.count
default: return 0
}
}
Upvotes: 1