在一个视图中设置两个 UIPickerviews
Setting up two UIPickerviews in one view
我在初学者 Swift 项目的一个视图中设置两个 UIPickerview 时遇到问题,我不断收到 Cannot subscript a value of type '[Range<Int>]'
错误,我无法理解我的想法做错了我正在研究这个项目以学习 swift.
@IBOutlet weak var hourWorkedPicker: UIPickerView!
@IBOutlet weak var payRatePicker: UIPickerView!
@IBOutlet weak var total: UILabel!
let hoursWorked = [10...60]
let payRate = [9...50]
override func viewDidLoad() {
super.viewDidLoad()
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if pickerView == hourWorkedPicker {
return hoursWorked.count
} else { // if it's the second picker view
return payRate.count
}
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView == hourWorkedPicker {
return hoursWorked[row] //ERORR IS HERE <-----------------------------
} else {
return payRate[row] //ERORR IS HERE <--------------------------------
}
}
您的函数需要 return 值为字符串。因为您没有将它们定义为字符串数组。
尝试使用
let hoursWorked = ["10", "20", "30", "40"];
let payRate = ["9", "10", "11"]
如果这看起来很费力,请以编程方式构建此数组。
let hoursWorked = [10...60]
let payRate = [9...50]
这些是范围变量而不是数组。您只能对数组使用下标。因此它失败于
return hoursWorked[row]
因此,您应该将范围转换为数组。
要转换,你可以使用类似下面的东西
let hoursWorked: [Int] = Array(10...60)
or
let hoursWorked = [Int](10...60)
我在初学者 Swift 项目的一个视图中设置两个 UIPickerview 时遇到问题,我不断收到 Cannot subscript a value of type '[Range<Int>]'
错误,我无法理解我的想法做错了我正在研究这个项目以学习 swift.
@IBOutlet weak var hourWorkedPicker: UIPickerView!
@IBOutlet weak var payRatePicker: UIPickerView!
@IBOutlet weak var total: UILabel!
let hoursWorked = [10...60]
let payRate = [9...50]
override func viewDidLoad() {
super.viewDidLoad()
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if pickerView == hourWorkedPicker {
return hoursWorked.count
} else { // if it's the second picker view
return payRate.count
}
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView == hourWorkedPicker {
return hoursWorked[row] //ERORR IS HERE <-----------------------------
} else {
return payRate[row] //ERORR IS HERE <--------------------------------
}
}
您的函数需要 return 值为字符串。因为您没有将它们定义为字符串数组。
尝试使用
let hoursWorked = ["10", "20", "30", "40"];
let payRate = ["9", "10", "11"]
如果这看起来很费力,请以编程方式构建此数组。
let hoursWorked = [10...60]
let payRate = [9...50]
这些是范围变量而不是数组。您只能对数组使用下标。因此它失败于
return hoursWorked[row]
因此,您应该将范围转换为数组。
要转换,你可以使用类似下面的东西
let hoursWorked: [Int] = Array(10...60)
or
let hoursWorked = [Int](10...60)