// // citysCell.m // b // // Created by kaidan on 2017/1/12. // Copyright © 2017年 kaidan. All rights reserved. // #import "Masonry.h" #import "citysCell.h" #import "CityModelData.h" #import "MySingleton.h" //单例类 #import // 数据转模型类 #import "CusDatePickerWithArea.h" // pickView #define changeDesc @"changeDesc" #define selectCityIndex @"selectCityIndex" // 选中城市的下标 #define screenWidthW [[UIScreen mainScreen] bounds].size.width #define screenHeightH [[UIScreen mainScreen] bounds].size.height @interface citysCell (){ CusDatePickerWithArea *pickArea; // PickView视图 } /** * 城市模型数据 */ @property (nonatomic,strong)CityModelData *cityModel; @property(nonatomic,strong)UIButton* clickBtn; @property(nonatomic,strong)UILabel* titleLab; @end @implementation citysCell -(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ if (self == [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { self.textLabel.text = @"选择城市"; [self.clickBtn setTitleColor:[UIColor clearColor] forState:UIControlStateNormal]; [self.clickBtn addTarget:self action:@selector(showCitys) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:self.clickBtn]; [self.clickBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.height.equalTo(self); make.width.mas_equalTo(self).multipliedBy(0.5); make.left.mas_equalTo(self.mas_centerX); }]; self.titleLab = [[UILabel alloc] init]; self.titleLab.text = @"广东省 广州市"; self.titleLab.textAlignment = NSTextAlignmentLeft; [self.clickBtn addSubview:self.titleLab]; [self.titleLab mas_makeConstraints:^(MASConstraintMaker *make) { make.height.left.top.equalTo(self.clickBtn); make.right.mas_equalTo(self.clickBtn).offset(-30); }]; } return self; } -(UIButton *)clickBtn{ if (!_clickBtn) { _clickBtn = [[UIButton alloc] init]; } return _clickBtn; } -(CityModelData *)cityModel{ if (_cityModel==nil) { MySingleton *mySing=[MySingleton shareMySingleton]; if (mySing.cityModel) { _cityModel=mySing.cityModel; } else{ NSString *jsonPath=[[NSBundle mainBundle]pathForResource:@"province_data.json" ofType:nil]; NSData *jsonData=[[NSData alloc]initWithContentsOfFile:jsonPath]; NSString *stringValue=[[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding]; NSDictionary *dicValue=[mySing getObjectFromJsonString:stringValue]; // 将本地JSON数据转为对象 _cityModel=[CityModelData mj_objectWithKeyValues:dicValue]; mySing.cityModel=_cityModel; } } return _cityModel; } #pragma mark 上次选中的值 -(void)lastSelectValue{ NSString *strLastSelectValue=[MySingleton getsaveLoacalField:changeDesc]; // 得到本地存储的上次选中的值 if(strLastSelectValue.length>0){ [self.clickBtn setTitle:strLastSelectValue forState:UIControlStateNormal]; } } #pragma mark 添加pickView -(void)addPickView{ __weak typeof(self) lowSelf=self; pickArea=[[CusDatePickerWithArea alloc]initWithFrame:CGRectMake(0, 0, screenWidthW, screenHeightH) cityData:lowSelf.cityModel]; NSString *stringSelectCityIndex=[MySingleton getsaveLoacalField:selectCityIndex]; // 得到上次保存的下标 if (stringSelectCityIndex.length>0) { NSArray *arrIndex=[stringSelectCityIndex componentsSeparatedByString:@"-"]; if (arrIndex.count==3) { [pickArea scrollToRow:[arrIndex[0] integerValue] secondRand:[arrIndex[1] integerValue] thirdRand:[arrIndex[2] integerValue]]; // 滚动到选择的位置 } } else{ [pickArea scrollToRow:23 secondRand:0 thirdRand:4]; // 没有选择的情况下,默认滚动到上海 } UIWindow *myWindow=[[UIApplication sharedApplication]keyWindow]; [myWindow addSubview:pickArea]; pickArea.areaValue=^(NSString *value,NSString *indexString){ //Block回调传值 lowSelf.titleLab.text = value; [MySingleton saveLoacalWithField:changeDesc value:value]; // 保存对应的数据和选中的下标 [MySingleton saveLoacalWithField:selectCityIndex value:indexString]; }; } -(void)showCitys{ [self addPickView]; // 添加选中视图 } -(NSString *)cityStr{ return self.titleLab.text; } @end