RADatePickerViewController.m 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. //
  2. // RADatePickerViewController.m
  3. // Apex And Drivers
  4. //
  5. // Created by Jack on 2018/8/28.
  6. // Copyright © 2018年 USAI. All rights reserved.
  7. //
  8. #import "RADatePickerViewController.h"
  9. #import "RAPresentationController.h"
  10. @interface RADatePickerViewController () <UIViewControllerTransitioningDelegate>
  11. @property (strong, nonatomic) IBOutlet UILabel *titleLabel;
  12. @property (strong, nonatomic) IBOutlet UIDatePicker *datePicker;
  13. @property (nonatomic,copy) void(^blk)(NSDate *);
  14. @property (nonatomic,assign) UIDatePickerMode datePickerMode;
  15. @end
  16. @implementation RADatePickerViewController
  17. + (instancetype)viewControllerFromStoryboard {
  18. RADatePickerViewController *datePickerVC = [[UIStoryboard storyboardWithName:@"date" bundle:nil] instantiateViewControllerWithIdentifier:[self storyboardID]];
  19. return datePickerVC;
  20. }
  21. + (void)presentDatePicker:(UIViewController *)viewController title:(NSString *)title dateMode:(UIDatePickerMode)mode withSetBlk:(void(^)(NSDate *date))blk {
  22. if (!viewController) {
  23. return;
  24. }
  25. RADatePickerViewController *datePickerVC = [self viewControllerFromStoryboard];
  26. datePickerVC.title = title;
  27. datePickerVC.blk = blk;
  28. datePickerVC.datePickerMode = mode;
  29. datePickerVC.transitioningDelegate = datePickerVC;
  30. datePickerVC.modalPresentationStyle = UIModalPresentationCustom;
  31. // CGFloat width = [UIScreen mainScreen].bounds.size.width - 40;
  32. datePickerVC.preferredContentSize = CGSizeMake(300, 325);
  33. [viewController presentViewController:datePickerVC animated:YES completion:nil];
  34. }
  35. + (void)presentDatePicker:(UIViewController *)viewController title:(NSString *)title withSetBlk:(void(^)(NSDate *date))blk {
  36. [self presentDatePicker:viewController title:title dateMode:UIDatePickerModeDate withSetBlk:blk];
  37. }
  38. - (void)viewDidLoad {
  39. [super viewDidLoad];
  40. // Do any additional setup after loading the view.
  41. self.view.layer.cornerRadius = 10.0f;
  42. self.view.layer.masksToBounds = YES;
  43. self.datePicker.datePickerMode = self.datePickerMode;
  44. self.titleLabel.text = self.title;
  45. }
  46. - (void)didReceiveMemoryWarning {
  47. [super didReceiveMemoryWarning];
  48. // Dispose of any resources that can be recreated.
  49. }
  50. #pragma mark - UIViewControllerTransitioningDelegate
  51. - (UIPresentationController *)presentationControllerForPresentedViewController:(UIViewController *)presented
  52. presentingViewController:(UIViewController *)presenting
  53. sourceViewController:(UIViewController *)source {
  54. return [[RAPresentationController alloc] initWithPresentedViewController:presented presentingViewController:presenting];
  55. }
  56. #pragma mark - Action
  57. - (IBAction)cancelBtnClick:(id)sender {
  58. [self dismissViewControllerAnimated:YES completion:nil];
  59. }
  60. - (IBAction)setBtnClick:(id)sender {
  61. __weak typeof(self) weakSelf = self;
  62. NSDate *date = self.datePicker.date;
  63. [self dismissViewControllerAnimated:YES completion:^{
  64. if (weakSelf) {
  65. __strong typeof(weakSelf) strongSelf = weakSelf;
  66. if (strongSelf.blk) {
  67. strongSelf.blk(date);
  68. }
  69. }
  70. }];
  71. }
  72. @end