自定义的地址选择器(UIPickView)。功能是:选择省后,其下的城市都会出现。

自定义的地区选择器

序言:

现在,许多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

时间: 2024-08-28 06:34:02

自定义的地址选择器(UIPickView)。功能是:选择省后,其下的城市都会出现。的相关文章

适应移动端的地址四级(省市区街道)联动选择

首先推荐两款个人比较优秀的控件: 一.https://huangchanghuan.github.io/city-picker/ 这个是由 city-picker 控件(npm 安装方法: npm install city-picker),地址三级改造而来,数据由京东数据库提供. 优点: 1. 样式比较容易自定义: 2. 对省级地址按字母进行了区分,直观了然. 缺点: 1. 储存地址数据的文件,省市区街道四级在一个文件里,该文件接近 1M ,比较耗费流量: 2. 数据是由京东数据库提供,如果京东

Android 实现用户列表信息滑动删除功能和选择删除功能

在项目开发过程中,常常需要对用户列表的信息进行删除的操作.Android中常用的删除操作方式有两种 ,一种就是类似微信的滑动出现删除按钮方式,还有一种是通过CheckBox进行选择,然后通过按钮进行删除的方式.本来的实例集成上述的两种操作方式来实现用户列表删除的效果. 设计思路:在适配器类MyAdapter一个滑动删除按钮显示或隐藏的Map,一个用于CheckBox是否选中的Map和一个与MainAcitivyt进行数据交互的接口ContentsDeleteListener,同时该接口包含两个方

Magento 自定义URL 地址重写 分类分级显示

我们打算将URL在分类页面和产品页面分别定义为: domain.com/category/分类名.html domain.com/category/子分类名.html domain.com/goods/产品名.html 其实实现很简单,无需使用任何扩展程序.操作的前提是,你已经至少建立起一个根分类,一个子分类和一个产品. 1.登陆magento后台,在目录(Catalog)下选择URL重新管理(URL Rewrite Management): 2.在你创建了分类和产品后,应该在这里可以看见sys

教你怎样写自定义IP地址算法

通过IP地址可以看到算法规律,写成自定义IP地址,也可以把IP地址转为自定格式的IP地址.也可以用于加密一些明文数字.以下写正反算法: USE tempdb GO IF OBJECT_ID('fn_NrToChar') IS NOT NULL DROP FUNCTION fn_NrToChar GO /**************************************************************************************************

【求解】WinPhone模拟器报错:模拟器没法确定来宾虚拟机通信的主机ID地址。某些功能已被禁用【未解决】

先看警告 再看错误信息 计算机管理打不开就==>Win+R ==>compmgmt.msc 发现,dnt在管理员权限组里面,也在Hyper-V权限组里面 打开管理工具 重启 [求解]WinPhone模拟器报错:模拟器没法确定来宾虚拟机通信的主机ID地址.某些功能已被禁用[未解决][求解]WinPhone模拟器报错:模拟器没法确定来宾虚拟机通信的主机ID地址.某些功能已被禁用[未解决][求解]WinPhone模拟器报错:模拟器没法确定来宾虚拟机通信的主机ID地址.某些功能已被禁用[未解决][求解

Paypal Rest Api自定义物流地址(跳过填写物流地址)

PayPal之前的Rest Api是不支持自定义物流地址的,最新升级版本的提供了这个服务(Payment Experience),大概步骤如下: 1.申请一个自定义的配置ID 自定义配置包括Logo,Url,Shipping物流地址方案,允许填写备注等等 2.生成订单付款的时候,将该ID传送 示例代码在最新的SDK中都有Demo:如下: 一.Payment Experience Create var apiContext = Configuration.GetAPIContext(); // S

Android自定义按钮实现长按功能

通过自定义BUTTON,写一个LongTouchBtn类,在按下的时候执行onTouchEvent事件,通过这个事件使用回调函数来实现长按功能! XML: <huahua.btnlongtouch.LongTouchBtn android:id="@+id/btn2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=&q

sizzle分析记录: 自定义伪类选择器

可见性 :hidden :visible 隐藏对象没有宽高,前提是用display:none处理的 jQuery.expr.filters.hidden = function( elem ) { // Support: Opera <= 12.12 // Opera reports offsetWidths and offsetHeights less than zero on some elements return elem.offsetWidth <= 0 && elem

UITextView文字添加链接和自定义选择内容后的菜单

1.OC版 self.textView.dataDetectorTypes = UIDataDetectorTypeAll; self.textView.editable = NO;  //只有设置为No,不可编辑才能显示下划线. self.textView.text = @"http://www.baidu.com   \n tel://185-1108-9430  +8602980000000  [email protected]"; // 选择内容后弹框添加按钮  不必不可编辑