使用 NSDatePicker 就可以调出日期选择,结果图如最下。
文章目录
注意事项
- 建议把这个 picker 作为全局变量,这样就不会每次点击按钮都添加。
- 使用
setAction
监听选中的值; - 不管给 picker 设置的 frame 是多大,picker 的显示大小是固定的。
- 调出的 picker 带有日期和钟表的时间,选择日期 和 拨动钟表盘的 时分秒 针 都会触发
updateDateResult
方法
创建
- (void)pickTime{
NSDatePicker *datePicker = [[NSDatePicker alloc] initWithFrame:NSMakeRect(0, 0, 300, 300)];
[datePicker setDatePickerStyle:NSClockAndCalendarDatePickerStyle];
datePicker.wantsLayer = YES;
datePicker.layer.backgroundColor = [NSColor cyanColor].CGColor;
// 设置日期选择控件的类型为“时钟和日历”。其他类型有如,NSTextField文本框
[datePicker setDateValue: [NSDate date]]; // 初始化选中当前日期
[datePicker setTarget:self];
[datePicker setAction:@selector(updateDateResult:)]; // 绑定每次选择日期触发的action
[self.view addSubview:datePicker];
}
- (void)updateDateResult:(NSDatePicker *)datePicker{
// 拿到当前选择的日期
NSDate *theDate = [datePicker dateValue];
NSLog(@"日期:%@",theDate);
if (theDate) {
// 把选择的日期格式化成想要的形式
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *dateString = [formatter stringFromDate:theDate];
NSLog(@"日期:%@",dateString);
}
}
枚举
NSDatePickerStyle
typedef NS_ENUM(NSUInteger, NSDatePickerStyle) {
NSTextFieldAndStepperDatePickerStyle = 0,
NSClockAndCalendarDatePickerStyle = 1,
NSTextFieldDatePickerStyle = 2
};
NSDatePickerElementFlags
typedef NS_OPTIONS(NSUInteger, NSDatePickerElementFlags) {
/* Time Elements */
NSHourMinuteDatePickerElementFlag = 0x000c,
NSHourMinuteSecondDatePickerElementFlag = 0x000e,
NSTimeZoneDatePickerElementFlag = 0x0010,
/* Date Elements */
NSYearMonthDatePickerElementFlag = 0x00c0,
NSYearMonthDayDatePickerElementFlag = 0x00e0,
NSEraDatePickerElementFlag = 0x0100,
};
效果图
参考资料
悲观患者的《mac开发系列28:日期选择功能实现》http://www.jianshu.com/p/6886ed384cc4