我的UIPickerView具有四个组件,当我尝试构建它时,可以将其返回给我。我的意思是我使行数增加了一个点,因为在Swift中,数字从0开始但没有任何作用...。 有什么问题吗?
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
}
答案 0 :(得分:1)
请考虑[1...10]
是一个一个范围的数组,而不是10个整数的数组。
你必须写
let componentOne = Array(1...1000)
let componentTwo = Array(1...59)
let componentThree = Array(1...59)
let componentFour = Array(1...10)
为避免这些错误,请不要对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
}
}