Изменить цвет строки UIPicker или цвет текста строки - PullRequest
0 голосов
/ 21 июля 2011

У меня есть UIPicker, который я использую для включения и выключения слоев. Я хочу иметь возможность либо изменить цвет строки в средстве выбора, чтобы указать, включен ли этот слой, либо изменить цвет шрифта текста, чтобы указать, включен ли этот слой.

Если ни то, ни другое невозможно, я добавлю nsstring, чтобы добавить X в конце, прежде чем я верну его (таким образом, "улицы" станут "улицами Х", если слой включен). Я тоже не уверен, как это сделать. Я знаю, что вы можете делать этот тип буферизации с числом, но не уверен с NSString. Я знаю, что сборщик может отображать 27 символов, поэтому, возможно, установите длину строки в 26, а затем установите символ в позиции 26 в X? Но я не знаю, как установить длину строки.

Есть идеи для любого пути?

1 Ответ

0 голосов
/ 30 мая 2012

Для пользовательских строк в 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;

}
...