
UIPickerView的使用(二)
发布日期:2021-05-09 04:04:12
浏览次数:8
分类:博客文章
本文共 1950 字,大约阅读时间需要 6 分钟。
上篇文章 学习了如何创建单列选择器,现在看一下如何创建多列选择器
多列选择器(以二列为例)
1、遵守协议和创建两个数据源
2、创建pickView
3、实现代理
//UIPickerViewDataSource中定义的方法,该方法的返回值决定该控件包含的列数- (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView{ return 2; // 返回2表明该控件只包含2列}//UIPickerViewDataSource中定义的方法,该方法的返回值决定该控件指定列包含多少个列表项- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ // 如果该控件只包含一列,因此无须理会列序号参数component // 该方法返回teams.count,表明teams包含多少个元素,该控件就包含多少行 if (component == 0) { return _areas.count; } else return _teams.count; }// UIPickerViewDelegate中定义的方法,该方法返回的NSString将作为UIPickerView中指定列和列表项的标题文本- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ // 由于该控件只包含一列,因此无须理会列序号参数component // 该方法根据row参数返回teams中的元素,row参数代表列表项的编号, // 因此该方法表示第几个列表项,就使用teams中的第几个元素 if (component == 0) { return [_areas objectAtIndex:row]; } return [_teams objectAtIndex:row];}// 当用户选中UIPickerViewDataSource中指定列和列表项时激发该方法- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ NSArray *tmp = component == 0 ? _areas: _teams; NSString *tip = component == 0 ? @"区域":@"球队"; // 使用一个UIAlertView来显示用户选中的列表项 UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"提示" message:[NSString stringWithFormat:@"你选中的%@是:%@" , tip ,[ tmp objectAtIndex:row]] delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil]; [alert show];}// UIPickerViewDelegate中定义的方法,该方法返回的NSString将作为// UIPickerView中指定列的宽度-(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{ // 如果是第一列,宽度为90 if(component == 0) { return 90; } return 210; // 如果是其他列(只有第二列),宽度为210}
效果图
下一篇 是相关联的多列选择器的使用。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年03月31日 23时52分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C基础 redis缓存访问
2019-03-06
C高级 框架开发中红黑树结构
2019-03-06
C后端设计开发 - 第1章-流派-入我华山,学我剑法
2019-03-06
C基础 工程中常用的排序
2019-03-06
linux内核里的字符串转换 ,链表操作常用函数(转)
2019-03-06
12.JAVA-基本数据类型的包装类操作
2019-03-06
41.QT-多线程与界面之间交互总结
2019-03-06
6.Android-五大布局
2019-03-06
汇编指令-MOV与ldr区别(7)
2019-03-06
第3阶段——内核启动分析之start_kernel初始化函数(5)
2019-03-06
第4阶段——制作根文件系统之分析init进程(2)
2019-03-06
6.分析request_irq和free_irq函数如何注册注销中断(详解)
2019-03-06
12.Linux之输入子系统分析(详解)
2019-03-06
19.QT-事件发送函数sendEvent()、postEvent()
2019-03-06
MyBatis 面试题
2019-03-06
精尽MyBatis源码分析 - SqlSession 会话与 SQL 执行入口
2019-03-06
精尽MyBatis源码分析 - 插件机制
2019-03-06
最难的不是递归,是这场面试的有缘无分
2019-03-06
学会了这个开源工具,这就和产品妹子对线!
2019-03-06