UI基础--UIPikcerView实现省市联动示例

需求:

1.显示2列数据,一列数据为省级城市,另外一列为省级对应下的地市级城市,并可供选择;

2.选择省级城市时,对应的列显示为其省下的地市级城市,并可选择;

3.重新选择省级城市时,对应的地市级城市显示为其省会城市(如地市级城市不在索引为0处);

实现步骤:

1、搭建界面;

2、实现UIPikcerView的代理方法;

3、响应选择事件;

4、完成显示选择数据;

具体代码:

Model:

 1 //
 2 //  JWProvince.h
 3 //  12-27-Province
 4 //
 5 //  Created by xiaomoge on 14/12/27.
 6 //  Copyright (c) 2014年 xiaomoge. All rights reserved.
 7 //
 8
 9 #import <Foundation/Foundation.h>
10
11 @interface JWProvince : NSObject
12 @property (nonatomic,copy) NSString *name;
13 @property (nonatomic,strong) NSArray *cities;
14 - (instancetype)initWithDic:(NSDictionary *)dic;
15 + (instancetype)provinceWithDic:(NSDictionary *)dic;
16 + (NSMutableArray *)provinceList;
17 @end
 1 //
 2 //  JWProvince.m
 3 //  12-27-Province
 4 //
 5 //  Created by xiaomoge on 14/12/27.
 6 //  Copyright (c) 2014年 xiaomoge. All rights reserved.
 7 //
 8
 9 #import "JWProvince.h"
10
11 @implementation JWProvince
12 - (instancetype)initWithDic:(NSDictionary *)dic {
13     if (self = [super init]) {
14         [self setValuesForKeysWithDictionary:dic];
15     }
16     return self;
17 }
18 + (instancetype)provinceWithDic:(NSDictionary *)dic {
19     return [[self alloc] initWithDic:dic];
20 }
21
22 + (NSMutableArray *)provinceList {
23     NSArray *array = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"provinces" ofType:@"plist"]];
24
25     NSMutableArray *tempArray = [NSMutableArray array];
26
27     for (NSDictionary *dic in array) {
28         JWProvince *province = [JWProvince provinceWithDic:dic];
29         [tempArray addObject:province];
30     }
31     return tempArray;
32 }
33 @end

Controller:

 1 //
 2 //  ViewController.m
 3 //  12-27-Province
 4 //
 5 //  Created by xiaomoge on 14/12/27.
 6 //  Copyright (c) 2014年 xiaomoge. All rights reserved.
 7 //
 8
 9 #import "ViewController.h"
10 #import "JWProvince.h"
11 @interface ViewController ()<UIPickerViewDelegate,UIPickerViewDataSource>
12 @property (nonatomic,strong) NSArray *provinceDatas;
13 @property (nonatomic,assign) NSInteger index;
14 @end
15
16 @implementation ViewController
17 #pragma mark - 懒加载
18 - (NSArray *)provinceDatas {
19     if (!_provinceDatas) {
20         _provinceDatas = [JWProvince provinceList];
21     }
22     return _provinceDatas;
23 }
24 #pragma mark - UIPickerView数据源
25 //返回显示数据的列数
26 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
27     return 2;
28 }
29 //返回每列中对应的行的数
30 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
31     if (component == 0) {
32         return self.provinceDatas.count;//第一列显示的个数
33     }
34     JWProvince *pro = self.provinceDatas[self.index];
35     return pro.cities.count;//第二列显示的个数
36 }
37 #pragma mark - UIPickerView代理
38 //返回显示每列以及每行的内容
39 - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
40     if (component == 0) {
41         JWProvince *pp = self.provinceDatas[row];
42         return pp.name;//第一列显示的内容
43     }
44     JWProvince *pro = self.provinceDatas[self.index];
45     return pro.cities[row];//第二列显示的内容
46 }
47 #pragma mark - pickerView的选中方法
48 //选中行时做的操作
49 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
50     if (component == 0) {
51         self.index = row;
52         [pickerView reloadComponent:1];//重新加载对应的数据
53         [pickerView reloadAllComponents];//重新加载所有的数据
54         [pickerView selectRow:0 inComponent:1 animated:YES]; //不管之前第二列选中第几行,重新刷新数据后,都显示每二列的第一行
55     }
56 }
57 @end
时间: 2024-08-11 22:11:52

UI基础--UIPikcerView实现省市联动示例的相关文章

UI基础--UIPikcerView实现餐点搭配示例

需求: 1.显示3列餐点(水果.主菜.饮料)的数据,供选择: 2.选择完餐点后并显示在界面上: 3.提供“随机”按钮,随机选择餐点搭配,让上天决定选择什么餐点: 效果图: 实现步骤: 1.搭建界面: 2.实现UIPikcerView的代理方法: 3.响应选择事件: 4.完成显示选择餐点的数据以及随机选择的功能: 具体代码: 1 // 2 // ViewController.m 3 // 12-27-UIPickerView 4 // 5 // Created by xiaomoge on 14/

ios开发-UI基础-超级猜图

[注意]转载时请注明出处博客园-吃唐僧肉的小悟空http://www.cnblogs.com/hukezhu/ 本篇文章介绍一个比较综合的小应用----超级猜图. 功能分析: 根据显示的图片,在下面的待选项按钮中选中正确答案按钮,选中的按钮会显示在正确答案按钮中 答案错误,答案颜色变为红色,分数减小 答案正确,答案颜色变为蓝色,两秒自动跳入下一题,分数增加 点击"下一题"可以进入下一个题目 点击"大图",可以放大显示图片,再次点击图片或者背景,图片缩小至原来大小 点

iOS开发UI基础—IOS开发中Xcode的一些使用技巧

iOS开发UI基础-IOS开发中Xcode的一些使用技巧 一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n     新建项目 cmd + n             新建文件 视图 option + cmd + 回车 打开助理编辑器 cmd + 回车           显示主窗口 cmd + 0             导航窗口 option + cmd + 0    工具窗口 在.m & .h之间切换           control + cmd + 上/下

ios开发UI基础—Kvc简单介绍

一.KVC简单介绍 KVC key valued coding 键值编码 KVC通过键值间接编码 补充: 与KVC相对的时KVO,即key valued observer 键值观察.监听某一个模型的属性,只要模型属性的值一变化就通知你. 二.使用KVC 1.KVC基本使用介绍 (1)代码示例: 新建一个命令行项目,用以演示KVC的用法 完成之后为项目添加一个Person类. 为Person类添加两个属性(name和age),注意这两个属性的类型. 1 #import <Foundation/Fo

iOS开发UI基础—xib的简单使用

iOS开发UI基础-xib的简单使用 一.简单介绍 xib和stotyboard的比较,一个轻量级一个重量级. 二.xib的简单使用 1.建立xib文件 建立的xib文件命名为appxib.xib 2.对xib进行设置 根据程序的需要,这里把view调整为自由布局 建立view模型(设置长宽等参数) 调整布局和内部的控件 完成后的单个view 3.使用xib文件的代码示例 YYViewController.m文件代码如下: 1 // 2 // YYViewController.m 3 // 10

Json 基于jQuery+JSON的省市联动效果

helloweba.com 作者:月光光 时间:2012-09-12 21:57 标签: jQuery  JSON  Ajax  省市联动 省市区联动下拉效果在WEB中应用非常广泛,尤其在一些会员信息系统.电商网站最为常见.开发者一般使用Ajax实现无刷新下拉联动.本文将讲述,利用jQuery插件,通过读取JSON数据,实现无刷新动态下拉省市二(三)级联动效果. 查看演示 下载源码 HTML 首先在head中载入jquery库和cityselect插件. <script type="tex

iOS开发UI基础—简单的浏览器查看程序

iOS开发UI基础-简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 需要读取或修改属性的控件需要设置属性 序号标签 图片 图片描述 左边按钮 右边按钮 (2) 需要监听响应事件的对象,需要添加监听方法 左边按钮 右边按钮 二.实现基本功能的程序 1 // 2 // YYViewController.m 3 // 03-图片浏览器初步 4 // 5 // Created by apple on 14-5-21. 6 // Copyright (c) 2014年 itcas

iOS开发UI基础—transframe属性(形变)

iOS开发UI基础-transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两大类 (1) 创建"基于控件初始位置"的形变 CGAffineTransformMakeTranslation(平移) CGAffineTransformMakeScale(缩放) CGAffineTransformMakeRotation(旋转) (2) 创建"基于trans

iOS开发UI基础—懒加载

iOS开发UI基础-懒加载 1.懒加载基本 懒加载--也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化 2.使用懒加载的好处: (1)不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强 (2)每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合 3.代码示例 1 // 2 // YYViewController.m