我用以下代码创建了pickerview
@IBOutlet var myPicker: UIPickerView!
var colors: [String] = ["red","green","blue"]
override func viewDidLoad() {
super.viewDidLoad()
myPicker = UIPickerView()
myPicker.dataSource = self
myPicker.delegate = self
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return colors.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return colors[row] as! String
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
}
Run Code Online (Sandbox Code Playgroud)
现在我想更改所选行的标签(文本)颜色,例如,如果我向下滚动并选择蓝色,文本颜色应更改为橙色,其他2个标签将为黑色,当我选择其他行时,相同.我尝试了以下代码,但它不起作用
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView {
var pickerLabel = UILabel()
var myTitle:NSAttributedString
let titleData = colors[row]
if pickerView.selectedRowInComponent(component) == row {
myTitle = NSAttributedString(string: titleData, attributes: [NSForegroundColorAttributeName: UIColor.redColor()])
} else {
myTitle = NSAttributedString(string: titleData, attributes: [NSForegroundColorAttributeName: UIColor.blueColor()])
}
//This way you can set text for your label.
pickerLabel.attributedText = myTitle
return pickerLabel
}
Run Code Online (Sandbox Code Playgroud)
我不知道我是否应该用didSelectRow或viewForRow方法实现它,有人可以帮我这个吗?
你可以做以下的事情:
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
var colors = ["red","green","blue"]
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return colors.count
}
func pickerView(pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {
let color = (row == pickerView.selectedRowInComponent(component)) ? UIColor.orangeColor() : UIColor.blackColor()
return NSAttributedString(string: colors[row], attributes: [NSForegroundColorAttributeName: color])
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
pickerView.reloadAllComponents()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3945 次 |
| 最近记录: |