ios - 在 UIPickerView Swift 中更改选定值的颜色

标签 ios swift uipickerview

我有 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/

相关文章:

ios - 禁用文本字段中的字母字符(我的部分代码不会执行)

ios - 无限滚动的 UICollectionView?

iphone - UIPickerView 在选择器中消失的图像

iOS 快速操作分享与 UIActivityViewController

ios - 如何让 subview Controller 在横向呈现时理解其框架?

swift - iOS : String who cannot be nil. 我该怎么办?

ios - swift ,在同一 View 中显示一个警报然后显示另一个警报

ios - UITableViewCell 中的 UIPickerView 不加载数据

ios - 获取关键请求数据时出错: AVFoundationErrorDomain reason: Optional ("An unknown error occurred (-42650)")

ios - 不确定如何在 iOS 应用程序中管理数据