UIPickerView实例

+ (id)cityPicker

{

return [[NSBundle
mainBundle]
loadNibNamed:@"MJCityPicker"
owner:nil
options:nil][0];

}

#pragma mark
任何对象从xib中创建完毕的时候都会调用一次

- (void)awakeFromNib

{

NSArray *array = [NSArray
arrayWithContentsOfFile:[[NSBundle
mainBundle]
pathForResource:@"cities.plist"
ofType:nil]];

_provinces = [NSMutableArray
array];

for (NSDictionary
*dict
in array) {

MJProvince *p = [MJProvince
provinceWithDict:dict];

[_provinces
addObject:p];

}

}

#pragma mark - UIPickerView数据源方法

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView
*)pickerView

{

return
2;

}

#pragma mark
第component列有多少行数据

- (NSInteger)pickerView:(UIPickerView
*)pickerView numberOfRowsInComponent:(NSInteger)component

{

if (component ==
0) {
//
多少个省份

return
_provinces.count;

}
else {
//
当前选中省份的行数(城市个数)

// 1.获得选中了哪一个省

int pIndex = [pickerView
selectedRowInComponent:0];

// 2.取出省份模型

MJProvince *p =

_provinces[pIndex];

// 3.返回当前省份城市的个数

return p.cities.count;

}

}

#pragma mark - UIPickerView代理方法

- (NSString
*)pickerView:(UIPickerView
*)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

{

if (component ==
0) {
//显示哪个省份

// 1.取出省份模型

MJProvince *p =

_provinces[row];

// 2.取出省份名称

return p.name;

}
else {
//
显示哪个城市

// 1.获得选中了哪一个省

int pIndex = [pickerView
selectedRowInComponent:0];

// 2.取出省份模型

MJProvince *p =

_provinces[pIndex];

// 3.返回对应行的城市名称

return p.cities[row];

}

}

#pragma mark
监听选中了某一列的某一行

- (void)pickerView:(UIPickerView
*)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

{

if (component ==
0) {
//
改变了省份

//
刷新第1列的数据(重新刷新数据,重新调用数据源和代理的相应方法获得数据)

[pickerView
reloadComponent:1];

//
选中第1列的第0行

[pickerView
selectRow:0
inComponent:1
animated:YES];

}

//
更改文字

// 1.获得选中的省份名称

int pIndex =  [pickerView
selectedRowInComponent:0];

MJProvince *p =

_provinces[pIndex];

// 2.获得选中的城市位置

int cIndex = [pickerView
selectedRowInComponent:1];

// 3.通知代理

if ([_delegate
respondsToSelector:@selector(cityPicker:citySelectWithProvince:city:)])
{

[_delegate
cityPicker:self
citySelectWithProvince:p.name
city:p.cities[cIndex]];

}

}

#pragma mark 代理协议

@protocol
MJCityPickerDelegate <NSObject>

@optional

- (void)cityPicker:(MJCityPicker
*)cityPicker citySelectWithProvince:(NSString
*)province city:(NSString
*)city;

@end

注意:

由于UIPickerView继承自UIView,里面有数据源和代理,因此UIPickerView展示数据通过数据源,监听事件通过代理。

时间: 2024-11-05 16:41:01

UIPickerView实例的相关文章

iOS开发——高级UI之OC篇&amp;UIdatePicker&amp;UIPickerView简单使用

UIdatePicker&UIPickerView简单使用 /***********************************************************************************/ 一:UIdatePicker:(日期控件) 1.UIDatePicker什么时候用? 当用户选择日期的时候,一般弹出一个UIDatePicker给用户选择. 2.UIDatePickerios6和ios7/8的区别 下面看看使用封装的代码怎么去实现它: 因为这个比较简

UIdatePicker&amp;UIPickerView简单使用

/***********************************************************************************/ 一:UIdatePicker:(日期控件) 1.UIDatePicker什么时候用? 当用户选择日期的时候,一般弹出一个UIDatePicker给用户选择. 2.UIDatePickerios6和ios7/8的区别 下面看看使用封装的代码怎么去实现它: 因为这个比较简单,所以这里只是简单给出了封装之后UIDatePicker的

UI :使用 UIPickerView 来选择数据

问题:想让用户在程序中从一个列表中选择数据. 通过 Picker view 可以显示一系列的值给用户,并且可以让用户选择其中一个.iPhone 中 Clock 程序里面的时间选择就是一个非常好的例子 .h文件: #import <UIKit/UIKit.h> @interface ViewController : UIViewController<UIPickerViewDataSource,UIPickerViewDelegate> @property(nonatomic,str

solr分布式索引【实战一、分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例】

1 private static Properties prop = new Properties(); 2 3 private static String confFilePath = "conf" + File.separator + "config.properties";// 配置文件目录 4 static { 5 // 加载properties 6 InputStream is = null; 7 InputStreamReader isr = null;

Spring事务管理(详解+实例)

写这篇博客之前我首先读了<Spring in action>,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下: Spring事务机制详解 Spring事务配置的五种方式 Spring中的事务管理实例详解 1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是要么都执行要么都

【Kettle】4、SQL SERVER到SQL SERVER数据转换抽取实例

1.系统版本信息 System:Windows旗舰版 Service Pack1 Kettle版本:6.1.0.1-196 JDK版本:1.8.0_72 2.连接数据库 本次实例连接数据库时使用全局变量. 2.1 创建新转换:spoon启动后,点击Ctrl+N创建新转换 2.2 在新转换界面中,右键点击DB连接,系统会弹出[数据库连接]界面. windows系统环境下,可用${}获取变量的内容. 说明: 连接名称:配置数据源使用名称.(必填) 主机名称:数据库主机IP地址,此处演示使用本地IP(

ORACLE11g R2【RAC+ASM→单实例FS】

ORACLE11g R2[RAC+ASM→单实例FS] 11g R2 RAC+ASMà单实例FS的DG,建议禁用OMF. 本演示案例所用环境:   primary standby OS Hostname node1,node2 std OS Version RHEL6.5 RHEL6.5 DB Version 11.2.0.4 11.2.0.4 db_name stephen stephen db_unique_name stephen standby service_names stephen

Laravel 5.4 中的异常处理器和HTTP异常处理实例教程

错误和异常是处理程序开发中不可回避的议题,在本地开发中我们往往希望能捕获程序抛出的异常并将其显示打印出来,以便直观的知道程序在哪里出了问题并予以解决,而在线上环境我们不希望将程序错误或异常显示在浏览器中(出于安全考虑),这个时候我们仍然要捕获异常,只不过不是显示到浏览器中,而是记录到日志中,方便日后排查问题. 百牛信息技术bainiu.ltd整理发布于博客园 Laravel当然支持PHP原生的错误和异常处理,但是在此基础上进行了一些封装处理,从而更方便在不同开发环境切换以及对错误和异常的处理.

Hibernate简述及入门实例

一.Hibernate简述 总的概括,Hibernate是一个ORM的轻量级持久层框架,解决了对象和关系数据库中表的不匹配问题(阻抗不匹配)以及拥有开发代码不用去继承hibernate类或接口的优势(无侵入性).hibernate框架实现使得开发人员可以避免反复地编写javajdbc部分代码,应用面向对象的思维操作关系型数据库. 二.使用myeclipse创建hibernate实例两种方法(以hibernate3.5.2及mysql为例) a)手动编写hibernate.cfg.xml及*.hb