You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
4.6 KiB
145 lines
4.6 KiB
![]()
2 years ago
|
//
|
||
|
// 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 <MJExtension.h> // 数据转模型类
|
||
|
#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
|