更改UIPicker的行颜色或行文本颜色

时间:2011-07-20 20:38:53

标签: objective-c cocoa-touch uipickerview

我有UIPicker我用来打开和关闭图层。我希望能够更改选择器中行的颜色以指示该图层是否打开,或者更改文本的字体颜色以指示该图层是否已打开。

如果两者都不可能,我会追加nsstring在我返回之前在其末尾添加一个X(如果图层打开,“街道”将成为“街道X”)。我也不知道怎么做。我知道你可以使用数字进行这种类型的抛光,但不确定NSString。我知道选择器可以显示27个字符,所以可能将字符串长度设置为26,然后将位置26处的char设置为X?但我不知道如何设置字符串的长度。

任何一条路径的想法?

1 个答案:

答案 0 :(得分:0)

对于UIPickerView中的自定义行,您必须实现pickerView:viewForRow:forComponent:reusingView:而不是pickerView:titleForRow:forComponent:

在您的情况下,您只需使用UILabel作为视图,并更改每行的文本颜色和文本字符串。

假设您只有一个组件:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
    UILabel *label;
    if (!view) // No view to re-use, create a new one
        label = [[UILabel alloc] initWithFrame://your frame here];
    else
        label = (UILabel*)view;

    label.text = // Your row text here
    if (//some flag to indicate that this row is selected)
        label.textColor = [UIColor redColor];
    else
        label.textColor = [UIColor blackColor];

    return label;

}