Я создаю свой собственный UIPickerview для дат, поскольку мне нужны только месяцы и дни, а мне не нужны годы, поэтому я не могу использовать UIDatePicker. Когда выбраны разные месяцы, мне кажется, что я не могу воспроизвести то, как UIDatepicker серый выделяет недоступные дни. Например: если выбран ноябрь, можно выбрать дни с 1 по 30, а 31 - нет при использовании UIDatepicker. Кто-нибудь знает, как воспроизвести это и сделать определенную строку серой и недоступной для выбора. заранее спасибо
UIPickerView - Как сделать определенные строки недоступными для выбора и выделенными серым цветом
Ответы (2)
Я понимаю, что вы, возможно, уже поняли это, но я хотел добавить дополнительную информацию для тех, кто ищет тот же ответ.
Альтернативный маршрут, который вы можете попробовать, - через:
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
В этом методе вы должны проверить, правильно ли выбраны определенные компоненты в pickerView. Если этого не произошло, сбросьте конкретный компонент (столбец - почему они просто не назвали его так) до допустимой строки с помощью:
[pickerView selectRow:validRow inComponent:component animated:YES];
Это даст эффект, что если пользователь выберет конкретную недопустимую строку, она вернется вверх (или вниз) к действительной.
Кроме того, вы можете изменить набор данных для рассматриваемого компонента, а затем выполнить:
[pickerView reloadAllComponents];
Просто имейте в виду, что при настройке средства выбора вам придется выполнить эту проверку при первом запуске, поэтому убедитесь, что по умолчанию в pickerView нет недопустимых наборов данных.
Вам нужно будет написать настраиваемое представление для выбора