CGXVerticalMenuBaseView.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. //
  2. // CGXVerticalMenuBaseView.h
  3. // CGXVerticalMenuView-OC
  4. //
  5. // Created by CGX on 2018/05/01.
  6. // Copyright © 2019 CGX. All rights reserved.
  7. //
  8. #import <UIKit/UIKit.h>
  9. #import "CGXVerticalMenuIndicatoCollectionView.h"
  10. #import "CGXVerticalMenuViewDefines.h"
  11. #import "CGXVerticalMenuBaseModel.h"
  12. NS_ASSUME_NONNULL_BEGIN
  13. typedef NS_ENUM(NSUInteger, CGXVerticalMenuBaseViewSelectType) {
  14. CGXVerticalMenuBaseViewSelected,
  15. CGXVerticalMenuBaseViewClick,
  16. CGXVerticalMenuBaseViewScroll,
  17. };
  18. @interface CGXVerticalMenuBaseView : UIView<UICollectionViewDataSource,UICollectionViewDelegate>
  19. @property (nonatomic, strong,readonly) CGXVerticalMenuIndicatoCollectionView *collectionView;
  20. @property (nonatomic, strong) NSMutableArray <CGXVerticalMenuBaseModel *> *dataArray;
  21. @property (nonatomic, strong) NSArray <UIView<CGXCategoryListIndicatorProtocol> *> *indicators;
  22. // 滚动条 默认无
  23. @property (nonatomic, assign) BOOL showsVerticalScrollIndicator;
  24. /**
  25. 选中目标index的item
  26. */
  27. @property (nonatomic, assign) NSInteger selectedIndex;
  28. /**
  29. 刷新指定的index的cell
  30. 内部会触发`- (void)refreshCellModel:(CGXVerticalMenuBaseModel *)cellModel index:(NSInteger)index`方法进行cellModel刷新
  31. @param index 指定cell的index
  32. */
  33. - (void)reloadCellAtIndex:(NSInteger)index;
  34. - (void)initializeViews NS_REQUIRES_SUPER;
  35. /*
  36. 初始化使用
  37. */
  38. - (void)updateMenuWithDataArray:(NSMutableArray<CGXVerticalMenuBaseModel *> *)dataArray NS_REQUIRES_SUPER;
  39. /*
  40. 更新某个下标数据使用
  41. */
  42. - (void)replaceObjectAtIndex:(NSInteger)index ItemModel:(CGXVerticalMenuBaseModel *)itemModel NS_REQUIRES_SUPER;
  43. /*
  44. 自定义cell 必须实现
  45. */
  46. - (void)registerCell:(Class)classCell IsXib:(BOOL)isXib;
  47. - (void)registerFooter:(Class)footer IsXib:(BOOL)isXib;
  48. - (void)registerHeader:(Class)header IsXib:(BOOL)isXib;
  49. @end
  50. #pragma mark - Subclass Override
  51. @interface CGXVerticalMenuBaseView (BaseHooks)
  52. - (void)initializeData ;
  53. - (Class)preferredCellClass;
  54. - (UICollectionViewFlowLayout *)preferredFlowLayout;
  55. /**
  56. refreshState时调用,重置cellModel的状态
  57. @param cellModel 待重置的cellModel
  58. @param index cellModel在数组中的index
  59. */
  60. - (void)refreshCellModel:(CGXVerticalMenuBaseModel *)cellModel index:(NSInteger)index NS_REQUIRES_SUPER;
  61. /**
  62. 选中某个item时,刷新将要选中与取消选中的cellModel
  63. @param selectedCellModel 将要选中的cellModel
  64. @param unselectedCellModel 取消选中的cellModel
  65. */
  66. - (void)refreshSelectedCellModel:(CGXVerticalMenuBaseModel *)selectedCellModel unselectedCellModel:(CGXVerticalMenuBaseModel *)unselectedCellModel NS_REQUIRES_SUPER;
  67. @end
  68. NS_ASSUME_NONNULL_END