BRStringPickerView.h 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. //
  2. // BRStringPickerView.h
  3. // BRPickerViewDemo
  4. //
  5. // Created by renbo on 2017/8/11.
  6. // Copyright © 2017 irenb. All rights reserved.
  7. //
  8. // 最新代码下载地址:https://github.com/91renb/BRPickerView
  9. #import "BRBaseView.h"
  10. #import "BRResultModel.h"
  11. NS_ASSUME_NONNULL_BEGIN
  12. /// 字符串选择器类型
  13. typedef NS_ENUM(NSInteger, BRStringPickerMode) {
  14. /** 单列选择器 */
  15. BRStringPickerComponentSingle,
  16. /** 多列选择器 */
  17. BRStringPickerComponentMulti,
  18. /** 多级联动选择器 */
  19. BRStringPickerComponentLinkage
  20. };
  21. typedef void(^BRStringResultModelBlock)(BRResultModel * _Nullable resultModel);
  22. typedef void(^BRStringResultModelArrayBlock)(NSArray <BRResultModel *> * _Nullable resultModelArr);
  23. @interface BRStringPickerView : BRBaseView
  24. /**
  25. //////////////////////////////////////////////////////////////////////////
  26. ///
  27. /// 【用法一】
  28. /// 特点:灵活,扩展性强(推荐使用!)
  29. ///
  30. ////////////////////////////////////////////////////////////////////////*/
  31. /** 字符串选择器显示类型 */
  32. @property (nonatomic, assign) BRStringPickerMode pickerMode;
  33. /**
  34. * 1.设置数据源
  35. * 单列:@[@"男", @"女", @"其他"],或直接传一维模型数组(NSArray <BRResultModel *>*)
  36. * 多列:@[@[@"语文", @"数学", @"英语"], @[@"优秀", @"良好"]],或直接传多维模型数组
  37. * 联动:直接传一维模型数组(NSArray <BRResultModel *>*),要注意数据源联动格式,可参考Demo
  38. */
  39. @property (nullable, nonatomic, copy) NSArray *dataSourceArr;
  40. /**
  41. * 2.设置数据源
  42. * 直接传plist文件名:NSString类型(如:@"test.plist"),要带后缀名
  43. * 场景:可以将数据源数据(数组类型)放到plist文件中,直接传plist文件名更加简单
  44. */
  45. @property (nullable, nonatomic, copy) NSString *plistName;
  46. /**
  47. * 设置默认选中的位置【单列】
  48. * 推荐使用 selectIndex,更加严谨,可以避免使用 selectValue 时,有名称相同的情况
  49. */
  50. @property (nonatomic, assign) NSInteger selectIndex;
  51. @property (nullable, nonatomic, copy) NSString *selectValue;
  52. /**
  53. * 设置默认选中的位置【多列】
  54. * 推荐使用 selectIndexs,更加严谨,可以避免使用 selectValues 时,有名称相同的情况
  55. */
  56. @property (nullable, nonatomic, copy) NSArray <NSNumber *> *selectIndexs;
  57. @property (nullable, nonatomic, copy) NSArray <NSString *> *selectValues;
  58. /** 选择结果的回调【单列】 */
  59. @property (nullable, nonatomic, copy) BRStringResultModelBlock resultModelBlock;
  60. /** 选择结果的回调【多列】 */
  61. @property (nullable, nonatomic, copy) BRStringResultModelArrayBlock resultModelArrayBlock;
  62. /** 滚动选择时触发的回调【单列】 */
  63. @property (nullable, nonatomic, copy) BRStringResultModelBlock changeModelBlock;
  64. /** 滚动选择时触发的回调【多列】 */
  65. @property (nullable, nonatomic, copy) BRStringResultModelArrayBlock changeModelArrayBlock;
  66. /**
  67. * 最大层级数(列数) for `BRStringPickerComponentLinkage`, ignored otherwise.
  68. * 使用场景:默认可选,当数据源中有 key 等于 parentKey 情况时,必须要设置
  69. */
  70. @property (nonatomic, assign) NSInteger numberOfComponents;
  71. /// 初始化字符串选择器
  72. /// @param pickerMode 字符串选择器显示类型
  73. - (instancetype)initWithPickerMode:(BRStringPickerMode)pickerMode;
  74. /// 弹出选择器视图
  75. - (void)show;
  76. /// 关闭选择器视图
  77. - (void)dismiss;
  78. //================================================= 华丽的分割线 =================================================
  79. /**
  80. //////////////////////////////////////////////////////////////////////////
  81. ///
  82. /// 【用法二】:快捷使用,直接选择下面其中的一个方法进行使用
  83. /// 特点:快捷,方便
  84. ///
  85. ////////////////////////////////////////////////////////////////////////*/
  86. /**
  87. * 1.显示【单列】选择器
  88. *
  89. * @param title 选择器标题
  90. * @param dataSourceArr 数据源,格式:@[@"男", @"女", @"其他"],或直接传一维模型数组(NSArray <BRResultModel *>*)
  91. * @param selectIndex 默认选中的位置
  92. * @param resultBlock 选择后的回调
  93. *
  94. */
  95. + (void)showPickerWithTitle:(nullable NSString *)title
  96. dataSourceArr:(nullable NSArray *)dataSourceArr
  97. selectIndex:(NSInteger)selectIndex
  98. resultBlock:(nullable BRStringResultModelBlock)resultBlock;
  99. /**
  100. * 2.显示【单列】选择器
  101. *
  102. * @param title 选择器标题
  103. * @param dataSourceArr 数据源(如:@[@"男", @"女", @"其他"],或直接传模型数组)
  104. * @param selectIndex 默认选中的位置
  105. * @param isAutoSelect 是否自动选择,即滚动选择器后就执行结果回调,默认为 NO
  106. * @param resultBlock 选择后的回调
  107. *
  108. */
  109. + (void)showPickerWithTitle:(nullable NSString *)title
  110. dataSourceArr:(nullable NSArray *)dataSourceArr
  111. selectIndex:(NSInteger)selectIndex
  112. isAutoSelect:(BOOL)isAutoSelect
  113. resultBlock:(nullable BRStringResultModelBlock)resultBlock;
  114. /**
  115. * 3.显示【多列】选择器
  116. *
  117. * @param title 选择器标题
  118. * @param dataSourceArr 数据源,格式:@[@[@"语文", @"数学", @"英语"], @[@"优秀", @"良好"]],或直接传多维模型数组
  119. * @param selectIndexs 默认选中的位置(传索引数组,如:@[@2, @1])
  120. * @param resultBlock 选择后的回调
  121. *
  122. */
  123. + (void)showMultiPickerWithTitle:(nullable NSString *)title
  124. dataSourceArr:(nullable NSArray *)dataSourceArr
  125. selectIndexs:(nullable NSArray <NSNumber *> *)selectIndexs
  126. resultBlock:(nullable BRStringResultModelArrayBlock)resultBlock;
  127. /**
  128. * 4.显示【多列】选择器
  129. *
  130. * @param title 选择器标题
  131. * @param dataSourceArr 数据源,格式:@[@[@"语文", @"数学", @"英语"], @[@"优秀", @"良好"]],或直接传多维模型数组
  132. * @param selectIndexs 默认选中的位置(传索引数组,如:@[@2, @1])
  133. * @param isAutoSelect 是否自动选择,即滚动选择器后就执行结果回调,默认为 NO
  134. * @param resultBlock 选择后的回调
  135. *
  136. */
  137. + (void)showMultiPickerWithTitle:(nullable NSString *)title
  138. dataSourceArr:(nullable NSArray *)dataSourceArr
  139. selectIndexs:(nullable NSArray <NSNumber *> *)selectIndexs
  140. isAutoSelect:(BOOL)isAutoSelect
  141. resultBlock:(nullable BRStringResultModelArrayBlock)resultBlock;
  142. /**
  143. * 5.显示【联动】选择器
  144. *
  145. * @param title 选择器标题
  146. * @param dataSourceArr 数据源,格式:直接传一维模型数组(NSArray <BRResultModel *>*)
  147. * @param selectIndexs 默认选中的位置(传索引数组,如:@[@2, @1])
  148. * @param isAutoSelect 是否自动选择,即滚动选择器后就执行结果回调,默认为 NO
  149. * @param resultBlock 选择后的回调
  150. *
  151. */
  152. + (void)showLinkagePickerWithTitle:(nullable NSString *)title
  153. dataSourceArr:(nullable NSArray *)dataSourceArr
  154. selectIndexs:(nullable NSArray <NSNumber *> *)selectIndexs
  155. isAutoSelect:(BOOL)isAutoSelect
  156. resultBlock:(nullable BRStringResultModelArrayBlock)resultBlock;
  157. @end
  158. NS_ASSUME_NONNULL_END