How do I change the text color of UIPickerView with multiple components in Swift? How do I change the text color of UIPickerView with multiple components in Swift? swift swift

How do I change the text color of UIPickerView with multiple components in Swift?


The following pickerView:attributedTitleForRow:forComponent: method implementation should help you:

func pickerView(pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {    let attributedString = NSAttributedString(string: "some string", attributes: [NSForegroundColorAttributeName : UIColor.redColor()])    return attributedString}

Update

If you want to use attributedString in multiple if or switch statements, the following UIViewController subClass example will help you:

import UIKitclass ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {    @IBOutlet weak var picker: UIPickerView!    let arrayOne = ["One", "Two", "Three", "Four", "Five", "Six"]    let arrayTwo = ["Un", "Deux", "Trois", "Quatre", "Cinq", "Six"]    let arrayThree = [1, 2, 3, 4, 5, 6]    override func viewDidLoad() {        super.viewDidLoad()        picker.delegate = self        picker.dataSource = self    }    func numberOfComponentsInPickerView(_: UIPickerView) -> Int {        return 3    }    func pickerView(_: UIPickerView, numberOfRowsInComponent component: Int) -> Int {        switch component {        case 0:            return arrayOne.count        case 1:            return arrayTwo.count        case 2:            return arrayThree.count        default:            return NSNotFound        }    }    func pickerView(pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {        var attributedString: NSAttributedString!        switch component {        case 0:            attributedString = NSAttributedString(string: arrayOne[row], attributes: [NSForegroundColorAttributeName : UIColor.redColor()])        case 1:            attributedString = NSAttributedString(string: arrayTwo[row], attributes: [NSForegroundColorAttributeName : UIColor.redColor()])        case 2:            attributedString = NSAttributedString(string: toString(arrayThree[row]), attributes: [NSForegroundColorAttributeName : UIColor.redColor()])        default:            attributedString = nil        }        return attributedString    }    func pickerView(_: UIPickerView, didSelectRow row: Int, inComponent component: Int) {        switch component {        case 0:            println(arrayOne[row])        case 1:            println(arrayTwo[row])        case 2:            println(arrayThree[row])        default:            break        }    }}


Swift 4.0

func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {    return NSAttributedString(string: pickerData[row], attributes: [NSAttributedStringKey.foregroundColor : UIColor.white])}


Swift 3

func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {        let attributedString = NSAttributedString(string: "YOUR STRING", attributes: [NSForegroundColorAttributeName : UIColor.white])        return attributedString    }