123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601 |
- //
- // BRAddressPickerView.m
- // BRPickerViewDemo
- //
- // Created by renbo on 2017/8/11.
- // Copyright © 2017 irenb. All rights reserved.
- //
- // 最新代码下载地址:https://github.com/91renb/BRPickerView
- #import "BRAddressPickerView.h"
- #import "NSBundle+BRPickerView.h"
- @interface BRAddressPickerView ()<UIPickerViewDataSource, UIPickerViewDelegate>
- // 地址选择器
- @property (nonatomic, strong) UIPickerView *pickerView;
- // 省模型数组
- @property(nonatomic, copy) NSArray *provinceModelArr;
- // 市模型数组
- @property(nonatomic, copy) NSArray *cityModelArr;
- // 区模型数组
- @property(nonatomic, copy) NSArray *areaModelArr;
- // 选中的省
- @property(nonatomic, strong) BRProvinceModel *selectProvinceModel;
- // 选中的市
- @property(nonatomic, strong) BRCityModel *selectCityModel;
- // 选中的区
- @property(nonatomic, strong) BRAreaModel *selectAreaModel;
- // 记录省选中的位置
- @property(nonatomic, assign) NSInteger provinceIndex;
- // 记录市选中的位置
- @property(nonatomic, assign) NSInteger cityIndex;
- // 记录区选中的位置
- @property(nonatomic, assign) NSInteger areaIndex;
- @property (nonatomic, copy) NSArray <NSString *>* mSelectValues;
- @end
- @implementation BRAddressPickerView
- #pragma mark - 1.显示地址选择器
- + (void)showAddressPickerWithSelectIndexs:(NSArray <NSNumber *>*)selectIndexs
- resultBlock:(BRAddressResultBlock)resultBlock {
- [self showAddressPickerWithMode:BRAddressPickerModeArea dataSource:nil selectIndexs:selectIndexs isAutoSelect:NO resultBlock:resultBlock];
- }
- #pragma mark - 2.显示地址选择器
- + (void)showAddressPickerWithMode:(BRAddressPickerMode)mode
- selectIndexs:(NSArray <NSNumber *>*)selectIndexs
- isAutoSelect:(BOOL)isAutoSelect
- resultBlock:(BRAddressResultBlock)resultBlock {
- [self showAddressPickerWithMode:mode dataSource:nil selectIndexs:selectIndexs isAutoSelect:isAutoSelect resultBlock:resultBlock];
- }
- #pragma mark - 3.显示地址选择器
- + (void)showAddressPickerWithMode:(BRAddressPickerMode)mode
- dataSource:(NSArray *)dataSource
- selectIndexs:(NSArray <NSNumber *>*)selectIndexs
- isAutoSelect:(BOOL)isAutoSelect
- resultBlock:(BRAddressResultBlock)resultBlock {
- // 创建地址选择器
- BRAddressPickerView *addressPickerView = [[BRAddressPickerView alloc] initWithPickerMode:mode];
- addressPickerView.dataSourceArr = dataSource;
- addressPickerView.selectIndexs = selectIndexs;
- addressPickerView.isAutoSelect = isAutoSelect;
- addressPickerView.resultBlock = resultBlock;
- // 显示
- [addressPickerView show];
- }
- #pragma mark - 初始化地址选择器
- - (instancetype)initWithPickerMode:(BRAddressPickerMode)pickerMode {
- if (self = [super init]) {
- self.pickerMode = pickerMode;
- }
- return self;
- }
- #pragma mark - 处理选择器数据
- - (void)handlerPickerData {
- if (self.dataSourceArr && self.dataSourceArr.count > 0) {
- id item = [self.dataSourceArr firstObject];
- // 如果传的值是解析好的模型数组
- if ([item isKindOfClass:[BRProvinceModel class]]) {
- self.provinceModelArr = self.dataSourceArr;
- } else {
- self.provinceModelArr = [self getProvinceModelArr:self.dataSourceArr];
- }
- } else {
- // 如果外部没有传入地区数据源,就使用本地的数据源
- NSArray *dataSource = [NSBundle br_addressJsonArray];
-
- if (!dataSource || dataSource.count == 0) {
- return;
- }
- self.dataSourceArr = dataSource;
- self.provinceModelArr = [self getProvinceModelArr:self.dataSourceArr];
- }
-
- // 设置默认值
- [self handlerDefaultSelectValue];
- }
- #pragma mark - 获取模型数组
- - (NSArray <BRProvinceModel *>*)getProvinceModelArr:(NSArray *)dataSourceArr {
- NSMutableArray *tempArr1 = [NSMutableArray array];
- for (NSDictionary *proviceDic in dataSourceArr) {
- BRProvinceModel *proviceModel = [[BRProvinceModel alloc]init];
- proviceModel.code = [proviceDic objectForKey:@"code"];
- proviceModel.name = [proviceDic objectForKey:@"name"];
- proviceModel.index = [dataSourceArr indexOfObject:proviceDic];
- NSArray *cityList = [proviceDic.allKeys containsObject:@"cityList"] ? [proviceDic objectForKey:@"cityList"] : [proviceDic objectForKey:@"citylist"];
- NSMutableArray *tempArr2 = [NSMutableArray array];
- for (NSDictionary *cityDic in cityList) {
- BRCityModel *cityModel = [[BRCityModel alloc]init];
- cityModel.code = [cityDic objectForKey:@"code"];
- cityModel.name = [cityDic objectForKey:@"name"];
- cityModel.index = [cityList indexOfObject:cityDic];
- NSArray *areaList = [cityDic.allKeys containsObject:@"areaList"] ? [cityDic objectForKey:@"areaList"] : [cityDic objectForKey:@"arealist"];
- NSMutableArray *tempArr3 = [NSMutableArray array];
- for (NSDictionary *areaDic in areaList) {
- BRAreaModel *areaModel = [[BRAreaModel alloc]init];
- areaModel.code = [areaDic objectForKey:@"code"];
- areaModel.name = [areaDic objectForKey:@"name"];
- areaModel.index = [areaList indexOfObject:areaDic];
- [tempArr3 addObject:areaModel];
- }
- cityModel.arealist = [tempArr3 copy];
- [tempArr2 addObject:cityModel];
- }
- proviceModel.citylist = [tempArr2 copy];
- [tempArr1 addObject:proviceModel];
- }
- return [tempArr1 copy];
- }
- #pragma mark - 设置默认选择的值
- - (void)handlerDefaultSelectValue {
- __block NSString *selectProvinceName = nil;
- __block NSString *selectCityName = nil;
- __block NSString *selectAreaName = nil;
-
- if (self.mSelectValues.count > 0) {
- selectProvinceName = self.mSelectValues.count > 0 ? self.mSelectValues[0] : nil;
- selectCityName = self.mSelectValues.count > 1 ? self.mSelectValues[1] : nil;
- selectAreaName = self.mSelectValues.count > 2 ? self.mSelectValues[2] : nil;
- }
-
- if (self.pickerMode == BRAddressPickerModeProvince || self.pickerMode == BRAddressPickerModeCity || self.pickerMode == BRAddressPickerModeArea) {
- if (self.selectIndexs.count > 0) {
- NSInteger provinceIndex = [self.selectIndexs[0] integerValue];
- self.provinceIndex = (provinceIndex > 0 && provinceIndex < self.provinceModelArr.count) ? provinceIndex : 0;
- self.selectProvinceModel = self.provinceModelArr.count > self.provinceIndex ? self.provinceModelArr[self.provinceIndex] : nil;
- } else {
- self.provinceIndex = 0;
- self.selectProvinceModel = self.provinceModelArr.count > 0 ? self.provinceModelArr[0] : nil;
- @weakify(self)
- [self.provinceModelArr enumerateObjectsUsingBlock:^(BRProvinceModel * _Nonnull model, NSUInteger idx, BOOL * _Nonnull stop) {
- @strongify(self)
- if (selectProvinceName && [model.name isEqualToString:selectProvinceName]) {
- self.provinceIndex = idx;
- self.selectProvinceModel = model;
- *stop = YES;
- }
- }];
- }
- }
-
- if (self.pickerMode == BRAddressPickerModeCity || self.pickerMode == BRAddressPickerModeArea) {
- self.cityModelArr = [self getCityModelArray:self.provinceIndex];
- if (self.selectIndexs.count > 0) {
- NSInteger cityIndex = self.selectIndexs.count > 1 ? [self.selectIndexs[1] integerValue] : 0;
- self.cityIndex = (cityIndex > 0 && cityIndex < self.cityModelArr.count) ? cityIndex : 0;
- self.selectCityModel = self.cityModelArr.count > self.cityIndex ? self.cityModelArr[self.cityIndex] : nil;
- } else {
- self.cityIndex = 0;
- self.selectCityModel = self.cityModelArr.count > 0 ? self.cityModelArr[0] : nil;
- @weakify(self)
- [self.cityModelArr enumerateObjectsUsingBlock:^(BRCityModel * _Nonnull model, NSUInteger idx, BOOL * _Nonnull stop) {
- @strongify(self)
- if (selectCityName && [model.name isEqualToString:selectCityName]) {
- self.cityIndex = idx;
- self.selectCityModel = model;
- *stop = YES;
- }
- }];
- }
- }
-
- if (self.pickerMode == BRAddressPickerModeArea) {
- self.areaModelArr = [self getAreaModelArray:self.provinceIndex cityIndex:self.cityIndex];
- if (self.selectIndexs.count > 0) {
- NSInteger areaIndex = self.selectIndexs.count > 2 ? [self.selectIndexs[2] integerValue] : 0;
- self.areaIndex = (areaIndex > 0 && areaIndex < self.areaModelArr.count) ? areaIndex : 0;
- self.selectAreaModel = self.areaModelArr.count > self.areaIndex ? self.areaModelArr[self.areaIndex] : nil;
- } else {
- self.areaIndex = 0;
- self.selectAreaModel = self.areaModelArr.count > 0 ? self.areaModelArr[0] : nil;
- @weakify(self)
- [self.areaModelArr enumerateObjectsUsingBlock:^(BRAreaModel * _Nonnull model, NSUInteger idx, BOOL * _Nonnull stop) {
- @strongify(self)
- if (selectAreaName && [model.name isEqualToString:selectAreaName]) {
- self.areaIndex = idx;
- self.selectAreaModel = model;
- *stop = YES;
- }
- }];
- }
- }
- }
- // 根据 省索引 获取 城市模型数组
- - (NSArray *)getCityModelArray:(NSInteger)provinceIndex {
- BRProvinceModel *provinceModel = self.provinceModelArr[provinceIndex];
- // 返回城市模型数组
- return provinceModel.citylist;
- }
- // 根据 省索引和城市索引 获取 区域模型数组
- - (NSArray *)getAreaModelArray:(NSInteger)provinceIndex cityIndex:(NSInteger)cityIndex {
- BRProvinceModel *provinceModel = self.provinceModelArr[provinceIndex];
- if (provinceModel.citylist && provinceModel.citylist.count > 0) {
- BRCityModel *cityModel = provinceModel.citylist[cityIndex];
- // 返回地区模型数组
- return cityModel.arealist;
- } else {
- return nil;
- }
- }
- #pragma mark - 地址选择器
- - (UIPickerView *)pickerView {
- if (!_pickerView) {
- CGFloat pickerHeaderViewHeight = self.pickerHeaderView ? self.pickerHeaderView.bounds.size.height : 0;
- _pickerView = [[UIPickerView alloc]initWithFrame:CGRectMake(0, self.pickerStyle.titleBarHeight + pickerHeaderViewHeight, self.keyView.bounds.size.width, self.pickerStyle.pickerHeight)];
- _pickerView.backgroundColor = self.pickerStyle.pickerColor;
- _pickerView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth;
- _pickerView.dataSource = self;
- _pickerView.delegate = self;
- }
- return _pickerView;
- }
- #pragma mark - UIPickerViewDataSource
- // 1.设置 pickerView 的列数
- - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
- switch (self.pickerMode) {
- case BRAddressPickerModeProvince:
- return 1;
- break;
- case BRAddressPickerModeCity:
- return 2;
- break;
- case BRAddressPickerModeArea:
- return 3;
- break;
-
- default:
- break;
- }
- }
- // 2.设置 pickerView 每列的行数
- - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
- if (component == 0) {
- // 返回省个数
- return self.provinceModelArr.count;
- }
- if (component == 1) {
- // 返回市个数
- return self.cityModelArr.count;
- }
- if (component == 2) {
- // 返回区个数
- return self.areaModelArr.count;
- }
- return 0;
- }
- #pragma mark - UIPickerViewDelegate
- // 3.设置 pickerView 的显示内容
- - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(nullable UIView *)view {
- // 1.自定义 row 的内容视图
- UILabel *label = (UILabel *)view;
- if (!label) {
- label = [[UILabel alloc]init];
- label.backgroundColor = [UIColor clearColor];
- label.textAlignment = NSTextAlignmentCenter;
- label.font = self.pickerStyle.pickerTextFont;
- label.textColor = self.pickerStyle.pickerTextColor;
- // 字体自适应属性
- label.adjustsFontSizeToFitWidth = YES;
- // 自适应最小字体缩放比例
- label.minimumScaleFactor = 0.5f;
- }
- if (component == 0) {
- BRProvinceModel *model = self.provinceModelArr[row];
- label.text = model.name;
- } else if (component == 1) {
- BRCityModel *model = self.cityModelArr[row];
- label.text = model.name;
- } else if (component == 2) {
- BRAreaModel *model = self.areaModelArr[row];
- label.text = model.name;
- }
-
- // 2.设置选择器中间选中行的样式
- [self setPickerSelectRowStyle:pickerView titleForRow:row forComponent:component];
-
- return label;
- }
- #pragma mark - 设置选择器中间选中行的样式
- - (void)setPickerSelectRowStyle:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
- // 1.设置分割线的颜色
- for (UIView *subView in pickerView.subviews) {
- if (subView && [subView isKindOfClass:[UIView class]] && subView.frame.size.height <= 1) {
- subView.backgroundColor = self.pickerStyle.separatorColor;
- }
- }
-
- // 2.设置选择器中间选中行的背景颜色
- if (self.pickerStyle.selectRowColor) {
- UIView *contentView = nil;
- NSArray *subviews = pickerView.subviews;
- if (subviews.count > 0) {
- id obj = subviews.firstObject;
- if (obj && [obj isKindOfClass:[UIView class]]) {
- contentView = (UIView *)obj;
- }
- }
- UIView *columnView = nil;
- if (contentView) {
- id obj = [contentView valueForKey:@"subviewCache"];
- if (obj && [obj isKindOfClass:[NSArray class]]) {
- NSArray *columnViews = (NSArray *)obj;
- if (columnViews.count > 0) {
- id columnObj = columnViews.firstObject;
- if (columnObj && [columnObj isKindOfClass:[UIView class]]) {
- columnView = (UIView *)columnObj;
- }
- }
- }
- }
- if (columnView) {
- id obj = [columnView valueForKey:@"middleContainerView"];
- if (obj && [obj isKindOfClass:[UIView class]]) {
- UIView *selectRowView = (UIView *)obj;
- selectRowView.backgroundColor = self.pickerStyle.selectRowColor;
- }
- }
- }
-
- // 3.设置选择器中间选中行的字体颜色/字体大小
- if (self.pickerStyle.selectRowTextColor || self.pickerStyle.selectRowTextFont) {
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- // 当前选中的 label
- UILabel *selectLabel = (UILabel *)[pickerView viewForRow:row forComponent:component];
- if (selectLabel) {
- if (self.pickerStyle.selectRowTextColor) {
- selectLabel.textColor = self.pickerStyle.selectRowTextColor;
- }
- if (self.pickerStyle.selectRowTextFont) {
- selectLabel.font = self.pickerStyle.selectRowTextFont;
- }
- }
- });
- }
- }
- // 4.滚动 pickerView 执行的回调方法
- - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
- if (component == 0) { // 选择省
- // 保存选择的省份的索引
- self.provinceIndex = row;
- switch (self.pickerMode) {
- case BRAddressPickerModeProvince:
- {
- self.selectProvinceModel = self.provinceModelArr.count > self.provinceIndex ? self.provinceModelArr[self.provinceIndex] : nil;
- self.selectCityModel = nil;
- self.selectAreaModel = nil;
- }
- break;
- case BRAddressPickerModeCity:
- {
- self.cityModelArr = [self getCityModelArray:self.provinceIndex];
- [self.pickerView reloadComponent:1];
- [self.pickerView selectRow:0 inComponent:1 animated:YES];
- self.selectProvinceModel = self.provinceModelArr.count > self.provinceIndex ? self.provinceModelArr[self.provinceIndex] : nil;
- self.selectCityModel = self.cityModelArr.count > 0 ? self.cityModelArr[0] : nil;
- self.selectAreaModel = nil;
- }
- break;
- case BRAddressPickerModeArea:
- {
- self.cityModelArr = [self getCityModelArray:self.provinceIndex];
- self.areaModelArr = [self getAreaModelArray:self.provinceIndex cityIndex:0];
- [self.pickerView reloadComponent:1];
- [self.pickerView selectRow:0 inComponent:1 animated:YES];
- [self.pickerView reloadComponent:2];
- [self.pickerView selectRow:0 inComponent:2 animated:YES];
- self.selectProvinceModel = self.provinceModelArr.count > self.provinceIndex ? self.provinceModelArr[self.provinceIndex] : nil;
- self.selectCityModel = self.cityModelArr.count > 0 ? self.cityModelArr[0] : nil;
- self.selectAreaModel = self.areaModelArr.count > 0 ? self.areaModelArr[0] : nil;
- }
- break;
- default:
- break;
- }
- }
- if (component == 1) { // 选择市
- // 保存选择的城市的索引
- self.cityIndex = row;
- switch (self.pickerMode) {
- case BRAddressPickerModeCity:
- {
- self.selectCityModel = self.cityModelArr.count > self.cityIndex ? self.cityModelArr[self.cityIndex] : nil;
- self.selectAreaModel = nil;
- }
- break;
- case BRAddressPickerModeArea:
- {
- self.areaModelArr = [self getAreaModelArray:self.provinceIndex cityIndex:self.cityIndex];
- [self.pickerView reloadComponent:2];
- [self.pickerView selectRow:0 inComponent:2 animated:YES];
- self.selectCityModel = self.cityModelArr.count > self.cityIndex ? self.cityModelArr[self.cityIndex] : nil;
- self.selectAreaModel = self.areaModelArr.count > 0 ? self.areaModelArr[0] : nil;
- }
- break;
- default:
- break;
- }
- }
- if (component == 2) { // 选择区
- // 保存选择的地区的索引
- self.areaIndex = row;
- if (self.pickerMode == BRAddressPickerModeArea) {
- self.selectAreaModel = self.areaModelArr.count > self.areaIndex ? self.areaModelArr[self.areaIndex] : nil;
- }
- }
-
- // 滚动选择时执行 changeBlock
- if (self.changeBlock) {
- self.changeBlock(self.selectProvinceModel, self.selectCityModel, self.selectAreaModel);
- }
-
- // 设置自动选择时,滚动选择时就执行 resultBlock
- if (self.isAutoSelect) {
- if (self.resultBlock) {
- self.resultBlock(self.selectProvinceModel, self.selectCityModel, self.selectAreaModel);
- }
- }
- }
- // 设置行高
- - (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component {
- return self.pickerStyle.rowHeight;
- }
- #pragma mark - 重写父类方法
- - (void)reloadData {
- // 1.处理数据源
- [self handlerPickerData];
- // 2.刷新选择器
- [self.pickerView reloadAllComponents];
- // 3.滚动到选择的地区
- if (self.pickerMode == BRAddressPickerModeProvince) {
- [self.pickerView selectRow:self.provinceIndex inComponent:0 animated:YES];
- } else if (self.pickerMode == BRAddressPickerModeCity) {
- [self.pickerView selectRow:self.provinceIndex inComponent:0 animated:YES];
- [self.pickerView selectRow:self.cityIndex inComponent:1 animated:YES];
- } else if (self.pickerMode == BRAddressPickerModeArea) {
- [self.pickerView selectRow:self.provinceIndex inComponent:0 animated:YES];
- [self.pickerView selectRow:self.cityIndex inComponent:1 animated:YES];
- [self.pickerView selectRow:self.areaIndex inComponent:2 animated:YES];
- }
- }
- - (void)addPickerToView:(UIView *)view {
- // 1.添加地址选择器
- if (view) {
- // 立即刷新容器视图 view 的布局(防止 view 使用自动布局时,选择器视图无法正常显示)
- [view setNeedsLayout];
- [view layoutIfNeeded];
-
- self.frame = view.bounds;
- CGFloat pickerHeaderViewHeight = self.pickerHeaderView ? self.pickerHeaderView.bounds.size.height : 0;
- CGFloat pickerFooterViewHeight = self.pickerFooterView ? self.pickerFooterView.bounds.size.height : 0;
- self.pickerView.frame = CGRectMake(0, pickerHeaderViewHeight, view.bounds.size.width, view.bounds.size.height - pickerHeaderViewHeight - pickerFooterViewHeight);
- [self addSubview:self.pickerView];
- } else {
- [self.alertView addSubview:self.pickerView];
- }
-
- // 2.绑定数据
- [self reloadData];
-
- __weak typeof(self) weakSelf = self;
- self.doneBlock = ^{
- // 点击确定按钮后,执行block回调
- [weakSelf removePickerFromView:view];
-
- if (weakSelf.resultBlock) {
- weakSelf.resultBlock(weakSelf.selectProvinceModel, weakSelf.selectCityModel, weakSelf.selectAreaModel);
- }
- };
-
- [super addPickerToView:view];
- }
- #pragma mark - 重写父类方法
- - (void)addSubViewToPicker:(UIView *)customView {
- [self.pickerView addSubview:customView];
- }
- #pragma mark - 弹出选择器视图
- - (void)show {
- [self addPickerToView:nil];
- }
- #pragma mark - 关闭选择器视图
- - (void)dismiss {
- [self removePickerFromView:nil];
- }
- #pragma mark - setter方法
- - (void)setSelectValues:(NSArray<NSString *> *)selectValues {
- self.mSelectValues = selectValues;
- }
- #pragma mark - getter方法
- - (NSArray *)provinceModelArr {
- if (!_provinceModelArr) {
- _provinceModelArr = [NSArray array];
- }
- return _provinceModelArr;
- }
- - (NSArray *)cityModelArr {
- if (!_cityModelArr) {
- _cityModelArr = [NSArray array];
- }
- return _cityModelArr;
- }
- - (NSArray *)areaModelArr {
- if (!_areaModelArr) {
- _areaModelArr = [NSArray array];
- }
- return _areaModelArr;
- }
- - (BRProvinceModel *)selectProvinceModel {
- if (!_selectProvinceModel) {
- _selectProvinceModel = [[BRProvinceModel alloc]init];
- }
- return _selectProvinceModel;
- }
- - (BRCityModel *)selectCityModel {
- if (!_selectCityModel) {
- _selectCityModel = [[BRCityModel alloc]init];
- _selectCityModel.code = @"";
- _selectCityModel.name = @"";
- }
- return _selectCityModel;
- }
- - (BRAreaModel *)selectAreaModel {
- if (!_selectAreaModel) {
- _selectAreaModel = [[BRAreaModel alloc]init];
- _selectAreaModel.code = @"";
- _selectAreaModel.name = @"";
- }
- return _selectAreaModel;
- }
- - (NSArray *)dataSourceArr {
- if (!_dataSourceArr) {
- _dataSourceArr = [NSArray array];
- }
- return _dataSourceArr;
- }
- - (NSArray<NSString *> *)mSelectValues {
- if (!_mSelectValues) {
- _mSelectValues = [NSArray array];
- }
- return _mSelectValues;
- }
- - (NSArray<NSNumber *> *)selectIndexs {
- if (!_selectIndexs) {
- _selectIndexs = [NSArray array];
- }
- return _selectIndexs;
- }
- @end
|