KBDatePickerView.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #import <UIKit/UIKit.h>
  2. #import "Macros.h"
  3. #define NUMBER_OF_CELLS 100000
  4. // Enums are all defined like this to make it easier to convert them to / from string versions of themselves.
  5. #define TABLE_TAG(XX) \
  6. XX(KBTableViewTagMonths, = 501) \
  7. XX(KBTableViewTagDays, )\
  8. XX(KBTableViewTagYears, )\
  9. XX(KBTableViewTagHours, )\
  10. XX(KBTableViewTagMinutes, )\
  11. XX(KBTableViewTagAMPM, )\
  12. XX(KBTaleViewWeekday, )
  13. DECLARE_ENUM(KBTableViewTag, TABLE_TAG)
  14. #define PICKER_MODE(XX) \
  15. XX(KBDatePickerModeTime, ) \
  16. XX(KBDatePickerModeDate, ) \
  17. XX(KBDatePickerModeDateAndTime, ) \
  18. XX(KBDatePickerModeCountDownTimer, )
  19. DECLARE_ENUM(KBDatePickerMode, PICKER_MODE)
  20. @interface NSString (format)
  21. + (id _Nonnull )kb_stringWithFormat:(const char*) fmt,...;
  22. @end
  23. @interface UIView (Helper)
  24. -(void)removeAllSubviews;
  25. @end
  26. @interface UIStackView (Helper)
  27. - (void)removeAllArrangedSubviews;
  28. - (void)setArrangedViews:(NSArray * _Nonnull )views;
  29. @end
  30. @interface KBTableView: UITableView
  31. @property NSIndexPath * _Nullable selectedIndexPath;
  32. @property id _Nullable selectedValue;
  33. - (instancetype _Nonnull )initWithTag:(KBTableViewTag)tag delegate:(id _Nonnull )delegate;
  34. - (id _Nullable )valueForIndexPath:(NSIndexPath *_Nonnull)indexPath;
  35. - (NSArray *_Nonnull)visibleValues;
  36. @end
  37. @interface KBDatePickerView: UIControl <UITableViewDelegate, UITableViewDataSource>
  38. @property (nonnull, nonatomic, strong) NSDate *date;
  39. @property (nullable, nonatomic, strong) NSDate *minimumDate;
  40. @property (nullable, nonatomic, strong) NSDate *maximumDate;
  41. @property BOOL showDateLabel;
  42. @property KBDatePickerMode datePickerMode;
  43. @property NSInteger topOffset;
  44. @property (nonatomic, copy, nullable) void (^itemSelectedBlock)(NSDate * _Nullable date);
  45. +(id _Nonnull )todayInYear:(NSInteger)year;
  46. + (NSDateFormatter * _Nonnull )sharedDateFormatter;
  47. @end
  48. #define DPLog(format, ...) NSLog(@"[KBDatePickerView] %@",[NSString stringWithFormat:format, ## __VA_ARGS__]);