UI控件(UIPickerView)
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
_item1 = [[NSArray alloc]initWithObjects:@"大类1",@"大类2", nil];
_item2 = [NSDictionary dictionaryWithObjectsAndKeys:@[@"子类11",@"子类12"],@"大类1",@[@"子类21",@"子类22"],@"大类2",nil];
_item3 = [NSDictionary dictionaryWithObjectsAndKeys:@[@"条目111",@"条目112"],@"子类11",@[@"条目121",@"条目122"], @"子类12",nil];
_pickview = [[UIPickerView alloc]init];
_pickview.dataSource = self;
_pickview.delegate = self;
_pickview.frame = CGRectMake(, , , );
_pickview.showsSelectionIndicator = YES;
[self.view addSubview:_pickview];
}
// UIPickerViewDataSource协议必须实现的方法
// 确认该控件有多少列
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView
{
return ;
}
//UIPickerViewDataSource协议必须实现的方法
//返回当前列显示的行数
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
if( == component){
return _item1.count;
}else if( == component){
NSInteger item1 = [_pickview selectedRowInComponent:];
NSString *item1Name = _item1[item1];
NSArray *array = [_item2 valueForKey:item1Name];
return array.count;
}else if( == component){
NSInteger item1 = [_pickview selectedRowInComponent:];
NSString *item1Name = _item1[item1];
NSArray *array = _item2[item1Name];
NSInteger item2 = [_pickview selectedRowInComponent:];
NSString *item2Name = array[item2];
NSArray *array2 = _item3[item2Name];
return array2.count;
}else{
return ;
}
}
//UIPickerViewDelegate协议要求实现
//返回当前行的内容,此处是将数组中数值添加到滚动的那个显示栏上
-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if( == component){
return _item1[row];
}else if( == component){
NSInteger item1 = [_pickview selectedRowInComponent:];
NSString *item1Name = _item1[item1];
NSArray *array = _item2[item1Name];
return array[row];
}else if( == component){
NSInteger item1 = [_pickview selectedRowInComponent:];
NSString *item1Name = _item1[item1];
NSArray *array = _item2[item1Name];
NSInteger item2 = [_pickview selectedRowInComponent:];
NSString *item2Name = array[item2];
NSArray *array2 = _item3[item2Name];
return array2[row];
}else{
return NULL;
}
}
//获取选择的数据
//监听轮子的移动
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
if( == component){
//重新加载第二列的数据
NSLog(@"%@", _item1[row]);
[_pickview reloadComponent:];
}else if( == component){
//重新加载第三列的数据
[_pickview reloadComponent:];
NSInteger item1 = [_pickview selectedRowInComponent:];
NSString *item1Name = _item1[item1];
NSArray *array = _item2[item1Name];
NSLog(@"%@", array[row]);
}else if( == component){
NSInteger item1 = [_pickview selectedRowInComponent:];
NSString *item1Name = _item1[item1];
NSArray *array = _item2[item1Name];
NSInteger item2 = [_pickview selectedRowInComponent:];
NSString *item2Name = array[item2];
NSArray *array2 = _item3[item2Name];
NSLog(@"%@", array2[row]);
}
}
//工具函数,遍历字典
-(void)describeDictionary:(NSDictionary *)dict
{
NSArray *keys;
int i, count;
id key, value;
keys = [dict allKeys];
count = [keys count];
for (i = ; i < count; i++)
{
key = [keys objectAtIndex: i];
value = [dict objectForKey: key];
NSLog (@"Key: %@ for value: %@", key, value);
}
}
@end
UI控件(UIPickerView)的更多相关文章
- 【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )
转载注明出处 : http://blog.csdn.net/shulianghan/article/details/50348982 一. 日期选择器 (UIDatePicker) UIDatePic ...
- ios 中的UI控件学习总结(1)
UIKit框架提供了非常多功能强大又易用的UI控件 下面列举一些在开发中可能用得上的UI控件 UIButton 按钮 UILabel 文本标签 UITextField 文本输入框 UIImageVie ...
- UI控件概述
常见UI控件 UIKit框架提供了非常多功能强大又易用的UI控件,以便于开发者打造出各式各样的App 以下列举一些在开发中常见的UI控件(稍后补上图片示例) 1.UILabel– 文本标签:作用是显示 ...
- iOS:选择器控件UIPickerView的详解和演示
选择器控件UIPickerView: 功能:它能够创建一个类似于密码锁式的单列或多列的选择菜单,用户可以通过它设置的代理来选择需要菜单中的任意的数据.例如创建日历.字体表(类型.大小.颜色).图库等. ...
- ANDROID L——Material Design详解(UI控件)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...
- WinForm/Silverlight多线程编程中如何更新UI控件的值
单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么 ...
- 富客户端 wpf, Winform 多线程更新UI控件
前言 在富客户端的app中,如果在主线程中运行一些长时间的任务,那么应用程序的UI就不能正常相应.因为主线程要负责消息循环,相应鼠标等事件还有展现UI. 因此我们可以开启一个线程来格外处理需要长时间的 ...
- UI控件(复习一下)
如何修改控件状态• 可见,确实需要经常修改控件状态• 那如何去修改控件的状态呢?方法很简单➢ 每一个UI控件都是一个对象➢ 修改UI控件的状态,其实就是修改控件对象的属性➢ 比如修改UILabel显示 ...
- IOS学习资源收集--开发UI控件相关
收集的一些本人了解过的iOS开发UI控件相关的代码资源(本文持续补充更新) 内容大纲: 1.本人在github上也上传了我分装好的一些可重复利用的UI控件 2.计时相关的自定义UILabel控件 正文 ...
- 《深入理解Windows Phone 8.1 UI控件编程》基于最新的Runtime框架
<深入理解Windows Phone 8.1 UI控件编程>本书基于最新的Windows Phone 8.1 Runtime SDK编写,全面深入地论述了最酷的UI编程技术:实现复杂炫酷的 ...
随机推荐
- 表空间统计报告 Tablespace growth Report
SQL> select TS# from v$tablespace where name='ABC' ; TS# ---------- 6 set serverout on set verify ...
- css雪碧图生成工具4.2更新
v4.0更新连接:http://www.cnblogs.com/wang4517/p/4493917.html v4.1更新连接:http://www.cnblogs.com/wang4517/p/4 ...
- Jquery判断变量是否为空
var aaa=''; if(aaa) { //aaa不为空也不是不可识别对象时执行 } else { //aaa为空或不可识别时执行 } aaa必须是变量,对象的属性好像是不行,
- Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程)
Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程) 声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级 ...
- 为你的Android App实现自签名的 SSL 证书(转)
介绍 网络安全已成为大家最关心的问题. 如果你利用服务器存储客户资料, 那你应该考虑使用 SSL 加密客户跟服务器之间的通讯. 随着这几年手机应用迅速崛起. 黑客也开始向手机应用转移, 原因有下列3点 ...
- 一场IT民工 与 人贩子 之间的战争 - 感受来自PostgreSQL的爱
标签 PostgreSQL , 图数据库 , 社会关系分析 , 流式分析 , 人贩子 , 图像识别 , 人脸识别 , 公安刑侦 , pipelinedb , stream , neo4j , plpr ...
- javascript的对象
简介: JavaScript 中的所有事物都是对象:字符串.数字.数组.日期,等等.在 JavaScript 中,对象是拥有属性和方法的数据. 一.对象的类型 本地对象:就是ECMA定义好的一些对象, ...
- 使用极光推送(www.jpush.cn)向安卓手机推送消息【服务端向客户端主送推送】C#语言
在VisualStudio2010中新建网站JPushAndroid.添加引用json帮助类库Newtonsoft.Json.dll. 在web.config增加appkey和mastersecret ...
- Cucumber(一): Preparation
Every time I wrote some code in ruby and executed our cucumber features I craved for something simil ...
- Hadoop各商业发行版之比较
Hadoop的发行版除了社区的Apache hadoop外,cloudera,hortonworks,mapR,EMC,IBM,INTEL,华为等等都提供了自己的商业版本.商业版主要是提供了专业的技术 ...