MacOS 开发 - NSDatePicker(日期选择)

原创 2017年09月08日 17:44:04

使用 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 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
};

NSDatePickerStyle


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

版权声明:本文为博主原创文章,转载请附上本文链接地址。

相关文章推荐

MacOS 开发 - NSTextField

关键词:MacOS 开发 , NSTextField,doCommandBySelector,isValidObject,NSControlSubclassNotifications,NSContro...

MacOS 开发 - NSBezelStyle & NSButton(配图)

NSBezelStyle typedef NS_ENUM(NSUInteger, NSBezelStyle) { NSBezelStyleRounded = 1, ...

macOS逆向开发之class-dump

一、配置class-dump 1.打开http://stevenygard.com/projects/class-dump下载class-dump-3.5.dmg2.双击class-dump-3.5...

MacOS上Node.js开发环境安装与测试

1.首先我们安装管理工具homebrew。打开终端,输入下面指令。 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/H...

使用Swift开发一个MacOS的菜单状态栏App

这两天突然想看看OSX下的App开发,看了几篇文章。下面这一篇我觉得入门是非常好的。我仅转述为中文,并非原文翻译。原文地址:http://footle.org/WeatherBar/ 下面开始介绍如...

MacOS 搭建Android开发环境

如何在MAC OS X 安装Android SDK我以往用的开发环境都是以MAC OS安装VMware来跑不同的Windows OS,目前慢慢的将所要开发的项目由以往的传统的Wintel转移到Mobi...

macOS 下配置 MAMP 开发环境(Mac + Apache + Mysql + PHP)

macOS 中已经内置了 PHP、Python、Ruby、Perl 等常用的脚本语言,以及 Apache HTTP 服务器,所以使用起来非常方便。本文以最新的 macOS Sierra 10.12 配...

macos/unix下x264开发

macos/unix下x264开发x264新手入门下载x264源码videolan提供下载地址,git安装(没有git的自己装一下),终端进入你想保存源码的目录,输入:git clone git://...

macOS系统下搭建Android开发环境

在开始搭建Android开发环境之前,或者在学习Android开发之前,建议先学习Java入门知识。 Mac OS X系统在10.12.0起正式更名为“macOS”。 下面将从Android SD...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MacOS 开发 - NSDatePicker(日期选择)
举报原因:
原因补充:

(最多只允许输入30个字)