PGDatePicker+YearAndMonth.m 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. //
  2. // PGDatePicker+YearAndMonth.m
  3. //
  4. // Created by piggybear on 2018/3/18.
  5. // Copyright © 2018年 piggybear. All rights reserved.
  6. //
  7. #import "PGDatePicker+YearAndMonth.h"
  8. #import "PGDatePickerHeader.h"
  9. #import "PGDatePicker+Logic.h"
  10. #import "PGDatePicker+Common.h"
  11. @implementation PGDatePicker (YearAndMonth)
  12. - (void)yearAndMonth_setupSelectedDate {
  13. NSString *yearString = [self.pickerView textOfSelectedRowInComponent:0];
  14. yearString = [yearString componentsSeparatedByString:self.yearString].firstObject;
  15. NSString *monthString = [self.pickerView textOfSelectedRowInComponent:1];
  16. monthString = [monthString componentsSeparatedByString:self.monthString].firstObject;
  17. self.selectedComponents.year = [yearString integerValue];
  18. self.selectedComponents.month = [monthString integerValue];
  19. }
  20. - (void)yearAndMonth_setDateWithComponents:(NSDateComponents *)components animated:(BOOL)animated {
  21. if (components.year > self.maximumComponents.year) {
  22. components.year = self.maximumComponents.year;
  23. }else if (components.year < self.minimumComponents.year) {
  24. components.year = self.minimumComponents.year;
  25. }
  26. NSInteger row = components.year - self.minimumComponents.year;
  27. [self.pickerView selectRow:row inComponent:0 animated:animated];
  28. {
  29. NSInteger row = 0;
  30. NSString *string = [NSString stringWithFormat:@"%ld", components.month];
  31. BOOL isExist = [self.monthList containsObject:string];
  32. if (isExist) {
  33. row = [self.monthList indexOfObject:string];
  34. }
  35. [self.pickerView selectRow:row inComponent:1 animated:animated];
  36. }
  37. }
  38. - (void)yearAndMonth_didSelectWithComponent:(NSInteger)component {
  39. NSDateComponents *dateComponents = [self.calendar components:self.unitFlags fromDate:[NSDate date]];
  40. NSString *str = [[self.pickerView textOfSelectedRowInComponent:0] componentsSeparatedByString:self.yearString].firstObject;
  41. dateComponents.year = [str integerValue];
  42. if (component == 0) {
  43. BOOL refresh = [self setMonthListWithComponents:dateComponents refresh:true];
  44. [self.pickerView reloadComponent:1 refresh:refresh];
  45. }
  46. }
  47. @end