(iOS) Как сделать первое значение в UIPickerView невыбираемым?

Я использую UIPickerView с (например) 4 строки. Первое значение - "Выбрать значение" с серым текстом. Другие - это значения, которые пользователь должен выбрать черным текстом.

Выбор не является обязательным, поэтому пользователи могут просто пропустить его. Но если они этого не делают, как сделать первое значение невыбираемым обратно после того, как пользователь начнет выбирать?

Благодарю. С уважением.

1 ответ

Решение

Используйте метод делегата UIPickerView - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component изменить выбранную строку, если выбрана первая строка:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

    if (row == 0) {
        [pickerView selectRow:row+1 inComponent:component animated:YES];
    }
}

Изменить: вы можете изменить цвет текста, используя это:

- (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component {

    if (row == 0)
        return [[NSAttributedString alloc] initWithString:@"Pick a value" attributes:@{NSForegroundColorAttributeName:[UIColor lightGrayColor]}];
    else {
        // Return titles
    }
}

Это если вы нацелены на iOS 6+, и она заменяет ранее использованную -pickerView:titleForRow:forComponent: метод.

Другие вопросы по тегам