cdts/xdts-ios 3/TreeHole/Code/Gategory/BRPickerView/StringPickerView/BRStringPickerView.h
2023-07-27 09:20:00 +08:00

192 lines
7.4 KiB
Objective-C
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// BRStringPickerView.h
// BRPickerViewDemo
//
// Created by renbo on 2017/8/11.
// Copyright © 2017 irenb. All rights reserved.
//
// 最新代码下载地址https://github.com/91renb/BRPickerView
#import "BRBaseView.h"
#import "BRResultModel.h"
NS_ASSUME_NONNULL_BEGIN
/// 字符串选择器类型
typedef NS_ENUM(NSInteger, BRStringPickerMode) {
/** 单列选择器 */
BRStringPickerComponentSingle,
/** 多列选择器 */
BRStringPickerComponentMulti,
/** 多级联动选择器 */
BRStringPickerComponentLinkage
};
typedef void(^BRStringResultModelBlock)(BRResultModel * _Nullable resultModel);
typedef void(^BRStringResultModelArrayBlock)(NSArray <BRResultModel *> * _Nullable resultModelArr);
@interface BRStringPickerView : BRBaseView
/**
//////////////////////////////////////////////////////////////////////////
///
/// 【用法一】
/// 特点:灵活,扩展性强(推荐使用!)
///
////////////////////////////////////////////////////////////////////////*/
/** 字符串选择器显示类型 */
@property (nonatomic, assign) BRStringPickerMode pickerMode;
/**
* 1.设置数据源
* 单列:@[@"男", @"女", @"其他"],或直接传一维模型数组(NSArray <BRResultModel *>*)
* 多列:@[@[@"语文", @"数学", @"英语"], @[@"优秀", @"良好"]],或直接传多维模型数组
* 联动:直接传一维模型数组(NSArray <BRResultModel *>*)要注意数据源联动格式可参考Demo
*/
@property (nullable, nonatomic, copy) NSArray *dataSourceArr;
/**
* 2.设置数据源
* 直接传plist文件名NSString类型@"test.plist"),要带后缀名
* 场景可以将数据源数据数组类型放到plist文件中直接传plist文件名更加简单
*/
@property (nullable, nonatomic, copy) NSString *plistName;
/**
* 设置默认选中的位置【单列】
* 推荐使用 selectIndex更加严谨可以避免使用 selectValue 时,有名称相同的情况
*/
@property (nonatomic, assign) NSInteger selectIndex;
@property (nullable, nonatomic, copy) NSString *selectValue;
/**
* 设置默认选中的位置【多列】
* 推荐使用 selectIndexs更加严谨可以避免使用 selectValues 时,有名称相同的情况
*/
@property (nullable, nonatomic, copy) NSArray <NSNumber *> *selectIndexs;
@property (nullable, nonatomic, copy) NSArray <NSString *> *selectValues;
/** 选择结果的回调【单列】 */
@property (nullable, nonatomic, copy) BRStringResultModelBlock resultModelBlock;
/** 选择结果的回调【多列】 */
@property (nullable, nonatomic, copy) BRStringResultModelArrayBlock resultModelArrayBlock;
/** 滚动选择时触发的回调【单列】 */
@property (nullable, nonatomic, copy) BRStringResultModelBlock changeModelBlock;
/** 滚动选择时触发的回调【多列】 */
@property (nullable, nonatomic, copy) BRStringResultModelArrayBlock changeModelArrayBlock;
/**
* 最大层级数(列数) for `BRStringPickerComponentLinkage`, ignored otherwise.
* 使用场景:默认可选,当数据源中有 key 等于 parentKey 情况时,必须要设置
*/
@property (nonatomic, assign) NSInteger numberOfComponents;
/// 初始化字符串选择器
/// @param pickerMode 字符串选择器显示类型
- (instancetype)initWithPickerMode:(BRStringPickerMode)pickerMode;
/// 弹出选择器视图
- (void)show;
/// 关闭选择器视图
- (void)dismiss;
//================================================= 华丽的分割线 =================================================
/**
//////////////////////////////////////////////////////////////////////////
///
/// 【用法二】:快捷使用,直接选择下面其中的一个方法进行使用
/// 特点:快捷,方便
///
////////////////////////////////////////////////////////////////////////*/
/**
* 1.显示【单列】选择器
*
* @param title 选择器标题
* @param dataSourceArr 数据源,格式:@[@"男", @"女", @"其他"],或直接传一维模型数组(NSArray <BRResultModel *>*)
* @param selectIndex 默认选中的位置
* @param resultBlock 选择后的回调
*
*/
+ (void)showPickerWithTitle:(nullable NSString *)title
dataSourceArr:(nullable NSArray *)dataSourceArr
selectIndex:(NSInteger)selectIndex
resultBlock:(nullable BRStringResultModelBlock)resultBlock;
/**
* 2.显示【单列】选择器
*
* @param title 选择器标题
* @param dataSourceArr 数据源(如:@[@"男", @"女", @"其他"],或直接传模型数组)
* @param selectIndex 默认选中的位置
* @param isAutoSelect 是否自动选择,即滚动选择器后就执行结果回调,默认为 NO
* @param resultBlock 选择后的回调
*
*/
+ (void)showPickerWithTitle:(nullable NSString *)title
dataSourceArr:(nullable NSArray *)dataSourceArr
selectIndex:(NSInteger)selectIndex
isAutoSelect:(BOOL)isAutoSelect
resultBlock:(nullable BRStringResultModelBlock)resultBlock;
/**
* 3.显示【多列】选择器
*
* @param title 选择器标题
* @param dataSourceArr 数据源,格式:@[@[@"语文", @"数学", @"英语"], @[@"优秀", @"良好"]],或直接传多维模型数组
* @param selectIndexs 默认选中的位置(传索引数组,如:@[@2, @1]
* @param resultBlock 选择后的回调
*
*/
+ (void)showMultiPickerWithTitle:(nullable NSString *)title
dataSourceArr:(nullable NSArray *)dataSourceArr
selectIndexs:(nullable NSArray <NSNumber *> *)selectIndexs
resultBlock:(nullable BRStringResultModelArrayBlock)resultBlock;
/**
* 4.显示【多列】选择器
*
* @param title 选择器标题
* @param dataSourceArr 数据源,格式:@[@[@"语文", @"数学", @"英语"], @[@"优秀", @"良好"]],或直接传多维模型数组
* @param selectIndexs 默认选中的位置(传索引数组,如:@[@2, @1]
* @param isAutoSelect 是否自动选择,即滚动选择器后就执行结果回调,默认为 NO
* @param resultBlock 选择后的回调
*
*/
+ (void)showMultiPickerWithTitle:(nullable NSString *)title
dataSourceArr:(nullable NSArray *)dataSourceArr
selectIndexs:(nullable NSArray <NSNumber *> *)selectIndexs
isAutoSelect:(BOOL)isAutoSelect
resultBlock:(nullable BRStringResultModelArrayBlock)resultBlock;
/**
* 5.显示【联动】选择器
*
* @param title 选择器标题
* @param dataSourceArr 数据源,格式:直接传一维模型数组(NSArray <BRResultModel *>*)
* @param selectIndexs 默认选中的位置(传索引数组,如:@[@2, @1]
* @param isAutoSelect 是否自动选择,即滚动选择器后就执行结果回调,默认为 NO
* @param resultBlock 选择后的回调
*
*/
+ (void)showLinkagePickerWithTitle:(nullable NSString *)title
dataSourceArr:(nullable NSArray *)dataSourceArr
selectIndexs:(nullable NSArray <NSNumber *> *)selectIndexs
isAutoSelect:(BOOL)isAutoSelect
resultBlock:(nullable BRStringResultModelArrayBlock)resultBlock;
@end
NS_ASSUME_NONNULL_END