MacOS 開發 - NSDatePicker(日期選擇)

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章