2016-12-21 5 views
1

NSDatePicker에만 연도 구성 요소를 표시하려고합니다.NSDatePicker에서 연도 만 표시하는 방법

NSDateFormatter를 NSDatePatterer에 추가/설정하려고했지만 행운이 없었습니다. (NSDateFormatter를 펜촉의 NSDatePicker로 드래그하여)

NSDatePicker 또는 NSTextField를 서브 클래 싱하지 않고도이 작업을 수행 할 수있는 방법이 있습니까? 고맙습니다!

+2

경우 : yearOnlyDatePicker이 응용 프로그램을 실행할 때처럼 보이는 방법

In interface builder.

그것은 단지 1 년의 칼럼 일 뿐이다. 어떤 의미에서 이것은 "날짜"에 관한 것인가? 정수 목록에서 정수를 선택하는 것입니다. 거기에 날짜 선택기가 필요하지 않습니다. – matt

+0

이 [Show year in NSDatePicker] (http://stackoverflow.com/questions/12017791/uidatepicker-to-show-year-only) 링크는 도움이 될 것입니다. –

답변

2

Apple의 문서로 다이빙을 마친 후 해결책을 찾았으며 여기에 게시하여 다른 사람에게 유용합니다.

NSDatePicker의 하위 클래스는 필요 없으며 날짜 선택 도구가 표시 할 요소를 지정하는 - (void)setDatePickerElements:(NSDatePickerElementFlags)elementFlags 메서드가 있습니다. 그 상수를 볼 때

enum { 
    NSHourMinuteDatePickerElementFlag  = 0x000c, 
    NSHourMinuteSecondDatePickerElementFlag = 0x000e, 
    NSTimeZoneDatePickerElementFlag   = 0x0010, 
    NSYearMonthDatePickerElementFlag  = 0x00c0, 
    NSYearMonthDayDatePickerElementFlag  = 0x00e0, 
    NSEraDatePickerElementFlag    = 0x0100, 
}; 
typedef NSUInteger NSDatePickerElementFlags; 

, 나는 그냥 비트 마스크입니다 찾을 : elementFlags는 같은 열거에 의해 정의 된 상수이다. 비트 위치 및 해당 달력 요소는 다음과 같습니다.

15 - 9 비트 : 알 수 없음. 아마도 사용되지 않을 수 있습니다.

8 비트 : 시대. (4 자리 연도 형식 인 경우 아무 것도 표시되지 않습니다.)

7 비트 : 연도.

6 비트 : 월.

5 비트 : 일.

4 비트 : 표준 시간대.

3 비트 : 시간.

2 비트 : 분.

1 비트 : 초.

0 비트 : 알 수 없음. 밀리 세컨드이거나 미사용 일 수도 있습니다.

[_yearOnlyDatePicker setDatePickerElements:0x0080]; 

_yearOnlyPicker이 NSDatePicker의 인스턴스 :

그래서, 다음 줄은 나에게 년 만 날짜 선택을 줄 것이다.

어떻게 yearOnlyDatePicker 인터페이스 빌더에서 다음과 같습니다 : 여기


는 결과

When running the app.

+0

OS X 10.11 이상에서는 작동하지 않습니다. OS X 10.10은 테스트되지 않았습니다. 그러나 OS X 10.9 이전 버전에서는 작동합니다. –

1

NSDatePicker를 사용하지 않아도됩니다. 당신이해야 할 일은 당신이 원하는 범위의 연도를 만들어 일반 픽커를 위해 datasource으로 사용하는 것입니다.

for (int i=1900; i<=currentYear; i++) { 
    [_yourDataSourceArr addObject:[NSString stringWithFormat:@"%d",i]]; 
}