我有 UIPickerView 使用名称数组显示名称
数组的第一个元素是默认值“Select Name”
我想用加里色显示选定的值,用蓝色显示其余名称
此函数用于防止选择默认值:
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if row == 0 {
pickerView.selectRow(row+1, inComponent: component, animated: true)
selectedName = names[row+1]
} else {
selectedName = names[row]
}
}
这个函数可以改变颜色
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView {
let pickerLabel = UILabel()
pickerLabel.textColor = (row == pickerView.selectedRowInComponent(component)) ? UIColor.grayColor() : UIColor.blueColor()
pickerLabel.text = names[row].name
pickerLabel.textAlignment = NSTextAlignment.Center
return pickerLabel
}
问题是当我选择选择器的第一个值(不是默认值)时,颜色仍然是蓝色。所有其他项目都正常工作(当我选择它们时它们的颜色变为灰色)
最佳答案
Use the PickerView reloadComponentMethod
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if row == 0 {
pickerView.selectRow(row+1, inComponent: component, animated: true)
pickerView.reloadComponent(component)
selectedName = names[row+1]
}
else {
selectedName = names[row]
}
}
selectRow
只会将滚轮旋转到新行。调用 reloadComponent
刷新数据源以获取新 View
关于ios - 在 UIPickerView Swift 中更改选定值的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34926116/