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编程技术:实现复杂炫酷的 ...
随机推荐
- 【DWR系列01】-DWR简介及入门例子
.literal { background-color: #f2f2f2; border: 1px solid #cccccc; padding: 1px 3px 0; white-space: no ...
- Win10 UI入门 圆形控件
动态模版绑定 http://blog.csdn.net/XXChen2/article/details/4552554
- [转]js实现各种进制的转换
关键点: parseInt(string, radix).toString(target_radix); 参考:http://www.cnblogs.com/guowei1027/archive/20 ...
- 通过配置web.config使WCF向外提供HTTPS的Restful Service
如何通过WCF向外提供Restful的Service请看如下链接 http://www.cnblogs.com/mingmingruyuedlut/p/4223116.html 那么如何通过对web. ...
- laravel 框架使用总结 limit
后台开发就是数据的各种处理很多时候需要做到分页,但是在laravel中使用limit做分页的时候会出现问题,偏移量和每页的条数放进去好像不好使了 下面推荐给大家一种在laravel框架中非常好用的写法 ...
- 消息队列之ZeroMQ(C++)
ZMQ是什么? 这是个类似于Socket的一系列接口,他跟Socket的区别是:普通 的socket是端到端的(1:1的关系),而ZMQ却是可以N:M 的关系,人们对BSD套接字的了解较多的是点对点的 ...
- [bzoj4722]由乃
身为10班人,就凭标题,这道题是一定要做的. 但是做了才发现有毒....所以是信念和题解和大腿支撑了我! 先"假设"自己实力过硬,推出了结论:当区间过大时,必定存在一种方案可以输出 ...
- unix shell命令
man commandxx 查看某个命令的使用说明 权限---------------------- chmod o+wx testfile 给某个目录权限 chmod 777 READ ...
- HDU5838 Mountain(状压DP + 容斥原理)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5838 Description Zhu found a map which is a N∗M ...
- SQL注入攻防入门详解
=============安全性篇目录============== 本文转载 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机 ...