UiPickerView根据数据更改字体颜色

时间:2010-05-17 15:11:50

标签: iphone objective-c cocoa-touch

我正在使用一个pickerView,其中包含与数据库(CoreData)中的多个字段相关的多个组件。 是否可以根据数据库中数据的存在更改特定组件的fontcolor? 例如,DB中的字段为空,组件字体颜色应为RED,否则为黑色。

任何帮助将不胜感激!

的Dario

================== 谢谢肯尼,

我只能申请一个UIPicker。所以我',返回视图参数(没有modificatiosn)。结果是所有选择器显示空行。

感谢您的帮助!

在这里您可以找到代码片段:

  - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {

if (pickerView == tipoPk){
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100,30)];
label.textColor =      [UIColor redColor];
switch (component) {
case PK_Tipo:
label.text =  [tipoArray objectAtIndex:row]];
break;
case PK_Settore:
label.text =  [settoreArray objectAtIndex:row]];
break;
default:
break;
}
return label;
}
else {
return view;    // <====   return view for non related pickerviews , but no rows shown
}  


}

2 个答案:

答案 0 :(得分:4)

这个也有效..

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {

CGRect imageFrame = CGRectMake(0.0, 0.0, 15, 15);
UIImageView *label = [[[UIImageView alloc] initWithFrame:imageFrame] **autorelease**];

if (row == 0)
{
    label.backgroundColor = [UIColor redColor];
}
if (row == 1)
{
    label.backgroundColor = [UIColor blueColor];
}
if (row == 2)
{
    label.backgroundColor = [UIColor blackColor];
}   
return label;

}

答案 1 :(得分:0)

是的,但您必须使用-pickerView:viewForRow:forComponent:reusingView:并提供自定义UILabel。