// // RADatePickerViewController.m // Apex And Drivers // // Created by Jack on 2018/8/28. // Copyright © 2018年 USAI. All rights reserved. // #import "RADatePickerViewController.h" #import "RAPresentationController.h" @interface RADatePickerViewController () @property (strong, nonatomic) IBOutlet UILabel *titleLabel; @property (strong, nonatomic) IBOutlet UIDatePicker *datePicker; @property (nonatomic,copy) void(^blk)(NSDate *); @property (nonatomic,assign) UIDatePickerMode datePickerMode; @property (nonatomic,strong) NSDate *date; @end @implementation RADatePickerViewController + (NSString *)storyboardID { return NSStringFromClass([self class]); } + (instancetype)viewControllerFromStoryboard { RADatePickerViewController *datePickerVC = [[UIStoryboard storyboardWithName:@"date" bundle:nil] instantiateViewControllerWithIdentifier:[self storyboardID]]; return datePickerVC; } + (void)presentDatePicker:(UIViewController *)viewController title:(NSString *)title dateMode:(UIDatePickerMode)mode defaultDate:(NSDate *)date withSetBlk:(void(^)(NSDate *date))blk { if (!viewController) { return; } RADatePickerViewController *datePickerVC = [self viewControllerFromStoryboard]; datePickerVC.title = title; datePickerVC.blk = blk; datePickerVC.datePickerMode = mode; datePickerVC.date = date; datePickerVC.transitioningDelegate = datePickerVC; datePickerVC.modalPresentationStyle = UIModalPresentationCustom; // // CGFloat width = [UIScreen mainScreen].bounds.size.width - 40; // datePickerVC.preferredContentSize = CGSizeMake(300, 325); [viewController presentViewController:datePickerVC animated:YES completion:nil]; } + (void)presentDatePicker:(UIViewController *)viewController title:(NSString *)title dateMode:(UIDatePickerMode)mode withSetBlk:(void(^)(NSDate *date))blk { [self presentDatePicker:viewController title:title dateMode:mode defaultDate:[NSDate date] withSetBlk:blk]; } + (void)presentDatePicker:(UIViewController *)viewController title:(NSString *)title withSetBlk:(void(^)(NSDate *date))blk { [self presentDatePicker:viewController title:title dateMode:UIDatePickerModeDate withSetBlk:blk]; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.view.layer.cornerRadius = 10.0f; self.view.layer.masksToBounds = YES; self.datePicker.datePickerMode = self.datePickerMode; if (self.date) { self.datePicker.date = self.date; } self.titleLabel.text = self.title; CGFloat width = [UIScreen mainScreen].bounds.size.width - 40; self.preferredContentSize = CGSizeMake(width, width + 25); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - UIViewControllerTransitioningDelegate - (UIPresentationController *)presentationControllerForPresentedViewController:(UIViewController *)presented presentingViewController:(UIViewController *)presenting sourceViewController:(UIViewController *)source { return [[RAPresentationController alloc] initWithPresentedViewController:presented presentingViewController:presenting]; } #pragma mark - Action - (IBAction)cancelBtnClick:(id)sender { [self dismissViewControllerAnimated:YES completion:nil]; } - (IBAction)setBtnClick:(id)sender { __weak typeof(self) weakSelf = self; NSDate *date = self.datePicker.date; [self dismissViewControllerAnimated:YES completion:^{ if (weakSelf) { __strong typeof(weakSelf) strongSelf = weakSelf; if (strongSelf.blk) { strongSelf.blk(date); } } }]; } @end