我想仅在NSDatePicker中显示年份组件。
我尝试将NSDateFormatter设置/添加到NSDatePicker,但没有运气。 (通过在NSI中将NSDateFormatter拖动到NSDatePicker)
如果没有子类化NSDatePicker或NSTextField,有没有办法实现这个目的?谢谢!
答案 0 :(得分:2)
在深入了解Apple的文档之后,我找到了解决方案并希望在此处发布,以防它对其他人有用。
不需要子类NSDatePicker
,有一个方法- (void)setDatePickerElements:(NSDatePickerElementFlags)elementFlags
,它指定日期选择器将显示的元素。 elementFlags 是一个常量,由枚举定义为:
enum { NSHourMinuteDatePickerElementFlag = 0x000c, NSHourMinuteSecondDatePickerElementFlag = 0x000e, NSTimeZoneDatePickerElementFlag = 0x0010, NSYearMonthDatePickerElementFlag = 0x00c0, NSYearMonthDayDatePickerElementFlag = 0x00e0, NSEraDatePickerElementFlag = 0x0100, }; typedef NSUInteger NSDatePickerElementFlags;
在查看这些常量时,我发现它只是一个掩码。位位置和相应的日历元素如下:
15 - 9位:未知。也许未使用。
8位:时代。 (如果有4位数的年份格式,则不会显示任何内容。)
7位:年份。
6位:月。
5位:Day。
4位:时区。
3位:小时。
2位:分钟。
1位:秒。
0位:未知。也许毫秒,或未使用。
所以,以下行会给我一年的日期选择器:
[_yearOnlyDatePicker setDatePickerElements:0x0080];
_yearOnlyPicker
是NSDatePicker的一个实例。
结果如下:
Interface Builder中yearOnlyDatePicker
的样子:
运行应用时yearOnlyDatePicker
的样子:
答案 1 :(得分:1)
您不需要使用NSDatePicker。您所要做的就是创建一个您想要的年份,并将其用作datasource
作为普通选择器。
for (int i=1900; i<=currentYear; i++) {
[_yourDataSourceArr addObject:[NSString stringWithFormat:@"%d",i]];
}
答案 2 :(得分:1)
pd.options.display.float_format = '{0:.2f}'.format
不再被诱使仅显示年份。
可以通过配置年份-月份选择器并将其子类化为NSDatePickerCell来防止创建月份和分隔符字段来获取仅年份的NSDatePicker:
-[NSDatePicker setDatePickerElements:]
请向Apple提交错误报告,以请求仅提供一年的NSDatePicker变体。我还要求一个每周一次的选择器。