自定义的地区选择器
序言:
现在,许多APP里面都有注册界面和地址填写界面还有快递功能。这都会离不开一个很小的功能。那就是地址的选择和填写。
正文:
今天,我们要做一个地址填写的工具出来,很快速的完成,你的地址选择。我们要做的工具的功能是:
当你选择一个省或者市,则其下的城市都会出现。就不用我们在乱找了。
注意:
在此工具的创建时,遇到了一个很大难处。难处就是没有省地区的借口。现在,我已经写了一个,并以JSon的格式上传本博客资源里。
如果需要的朋友欢迎下载。我们为此,还要学会搭建本地服务器。
第一:我们打开终端服务器。步骤如下:
第二步:
在终端里输入
sudo apachectl start
如果有;PassWord :就输入你的登录密码。这个是看不见的。然后,在输入ifconfig 查出你的IP地址。
第三步:
点击 电脑里的 前往——————》电脑——————》点击你的系统盘————》再点击 资源库————————》点击 webserver 文件夹 ——————》documents文件架下——————》建立一个文件夹(比如 zs)
第四步:我们要下载一个东西(重要)。下载地址为:http://download.csdn.net/detail/zhoushuangjian511/8336843
第五步:
我们开始今天的重要代码创建。
我们首先添加两个写协议。如下:
<UIPickerViewDataSource,UIPickerViewDelegate>
第六步:
我们要创建四个对象。(其中)。代码:
{
UIPickerView*_ZSJPickView;
}
@property(nonatomic,strong)NSMutableArray*ShengArr;
@property(nonatomic,strong)NSMutableArray*ShengQuArr;
@property(nonatomic,strong)NSMutableArray*XianArr;;
第七步:
我们要初始化,这些对象。代码;
_ZSJPickView=[[UIPickerView alloc]initWithFrame:CGRectMake(0, 100, 320, 40)];
_ZSJPickView.delegate=self;
_ZSJPickView.dataSource=self;
[ImageView addSubview:_ZSJPickView];
UIView*View=[[UIView alloc]initWithFrame:CGRectMake(0, 28, 320, 40)];
View.backgroundColor=[UIColor whiteColor];
[_ZSJPickView addSubview:View];
第七步:
我们数据的下载:代码:
NSString*str=[NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://127.0.0.1/Junchang/ZSJCity.json"] encoding:NSUTF8StringEncoding error:nil];
NSDictionary*dic=[NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil];
self.ShengArr=dic[@"cityCode"];
self.ShengQuArr=self.ShengArr[0][@"city"];
第八步:实现我们一定要实现的几个方法,代码:
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 3;
}
-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
if (component==0) {
return self.ShengArr[row][@"province"];
}else if (component==1)
{
return self.ShengQuArr[row][@"cityName"];
}else
{
return self.XianArr[row];
}
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
if (component==0) {
NSLog(@"%d",self.ShengArr.count);
return self.ShengArr.count;
}else if (component==1)
{
return 20;
}else{
return self.XianArr.count;
}
}
第九步:
也是最重要的。如下:
self.ShengQuArr=[NSMutableArray arrayWithCapacity:0];
[self.ShengQuArr addObjectsFromArray:self.ShengArr[0][@"city"]];
[_ZSJPickView reloadComponent:1];
[self pickerView:_ZSJPickView titleForRow:0 forComponent:1];
效果展示:
完整代码下载如下:
http://download.csdn.net/my