前两篇文章 UIPickerView的使用(一) 、 UIPickerView的使用(二),学习了UIPickerView的单列选择器和双列选择器的使用。

现在我们一起学习相互依赖的多列选择器

1、遵守协议

2、创建pickView

3、实现协议

  1. //UIPickerViewDataSource中定义的方法,该方法的返回值决定该控件包含的列数
  2. - (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView
  3. {
  4. return ; // 返回2表明该控件只包含2列
  5. }
  6.  
  7. //UIPickerViewDataSource中定义的方法,该方法的返回值决定该控件指定列包含多少个列表项
  8. - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
  9. {
  10. // 由于该控件只包含一列,因此无须理会列序号参数component
  11. // 该方法返回teams.count,表明teams包含多少个元素,该控件就包含多少行
  12.  
  13. if (component == ) {
  14. return _areas.count;
  15. }
  16. else
  17.  
  18. return [[_teams objectForKey:_selectedAreas]count];
  19.  
  20. }
  21.  
  22. // UIPickerViewDelegate中定义的方法,该方法返回的NSString将作为UIPickerView
  23. // 中指定列和列表项的标题文本
  24. - (NSString *)pickerView:(UIPickerView *)pickerView
  25. titleForRow:(NSInteger)row forComponent:(NSInteger)component
  26. {
  27. // 由于该控件只包含一列,因此无须理会列序号参数component
  28. // 该方法根据row参数返回teams中的元素,row参数代表列表项的编号,
  29. // 因此该方法表示第几个列表项,就使用teams中的第几个元素
  30.  
  31. if (component == ) {
  32. return [_areas objectAtIndex:row];
  33. }
  34. return [[_teams objectForKey:_selectedAreas]objectAtIndex:row];
  35.  
  36. }
  37.  
  38. // 当用户选中UIPickerViewDataSource中指定列和列表项时激发该方法
  39. - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
  40. {
  41.  
  42. if (component == ) {
  43. _selectedAreas = [_areas objectAtIndex:row];
  44. [self.pickView reloadComponent:];
  45.  
  46. }
  47.  
  48. NSArray *tmp = component == ? _areas: [_teams objectForKey:_selectedAreas];
  49.  
  50. NSString *tip = component == ? @"区域":@"球队";
  51. // 使用一个UIAlertView来显示用户选中的列表项
  52. UIAlertView* alert = [[UIAlertView alloc]
  53. initWithTitle:@"提示"
  54. message:[NSString stringWithFormat:@"你选中的%@是:%@"
  55. , tip ,[ tmp objectAtIndex:row]]
  56. delegate:nil
  57. cancelButtonTitle:@"确定"
  58. otherButtonTitles:nil];
  59. [alert show];
  60. }
  61.  
  62. // UIPickerViewDelegate中定义的方法,该方法返回的NSString将作为
  63. // UIPickerView中指定列的宽度
  64. -(CGFloat)pickerView:(UIPickerView *)pickerView
  65. widthForComponent:(NSInteger)component
  66. {
  67. // 如果是第一列,宽度为90
  68. if(component == ) {
  69. return ;
  70. }
  71. return ; // 如果是其他列(只有第二列),宽度为210
  72. }

效果图:

UIPickerView的使用(三)的更多相关文章

  1. UIPickerView的使用(二)

    上篇文章 UIPickerView的使用(一)学习了如何创建单列选择器,现在看一下如何创建多列选择器 多列选择器(以二列为例) 1.遵守协议和创建两个数据源 2.创建pickView 3.实现代理 / ...

  2. UIPickerView的使用(一)

    简介:UIPickerView是一个选择器控件,它比UIDatePicker更加通用,它可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活.UIPick ...

  3. 省市区三级联动 pickerView

    效果图 概述 关于 省市区 三级联动的 pickerView,我想大多数的 iOS 开发者应该都遇到过这样的需求.在遇到这样的需求的时候,大多数人都会觉的这个很复杂,一时无从下手.其实真的没那么复杂. ...

  4. iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging

    1.表单键盘遮挡 应用场景为一个collectionView上有多个textfield.textView供用户填写信息. 之前输入项较少时,采取的方法比较粗暴,didSelectItemAtIndex ...

  5. UI控件(UIPickerView)

    @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; _item1 = [[NSArray alloc]i ...

  6. iOS:选择器控件UIPickerView的详解和演示

    选择器控件UIPickerView: 功能:它能够创建一个类似于密码锁式的单列或多列的选择菜单,用户可以通过它设置的代理来选择需要菜单中的任意的数据.例如创建日历.字体表(类型.大小.颜色).图库等. ...

  7. iOs基础篇(二十二)—— UIPickerView、UIDatePicker控件的使用

    一.UIPickerView UIPickerView是一个选择器控件,可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活. 1.常用属性 (1)num ...

  8. Objective-c——UI进阶开发第一天(UIPickerView和UIDatePicker)

    一.知识点 1.介绍数据选择控件UIPickerView和日期选择控件UIDatePicker控件 * UIPickerView的案例 * 点餐系统 * 城市选择 * 国旗选择 * UIDatePic ...

  9. UIPickerView详解

    一.UIPickerView 1.UIPickerView的常见属性 // 数据源(用来告诉UIPickerView有多少列多少行) @property(nonatomic,assign) id< ...

随机推荐

  1. fix orphaned user

    orphan user是某个数据库的user,只有user name而没有login,即,在存在于sys.database_principals 中, 而不存在于 sys.server_princip ...

  2. Lookup component 用法

    Lookup component 类似于Tsql的join子句, select a.* ,b.* from dbo.tis a left join dbo. tdes b on a.code=b.co ...

  3. EF Power Tools参数不正确的解决方法

    在Visual Studio 2010安装了EF Power Tools Beta 3之后,希望根据本地现有数据库模型来生成基于Entity Framework Code First的代码时,经常出现 ...

  4. 【Win10应用开发】相对布局(RelativePanel)

    外面的雨下得很大,老周就决定雨下漫笔了. 今天咱们说一个新控件——RelativePanel.本质上,它就是一个面板,面板干啥用的?面板就是一个容器,里面可以放其他对象,就像我们小时候玩的七巧板一样, ...

  5. 前端学PHP之语句

    × 目录 [1]if语句 [2]switch [3]while[4]do-while[5]for语句[6]foreach[7]break[8]continue[9]goto 前面的话 任何 PHP 脚 ...

  6. (第六天)DOM

    概念 文档对象模型(DOM)是表示和操作HTML和XML文档内容的基础API. 选取文档元素 (1)通过ID选取元素 var id = document.getElementById("se ...

  7. Android使用TextureView播放视频

    1.引言 如果你想显示一段在线视频或者任意的数据流比如视频或者OpenGL 场景,你可以用android中的TextureView做到. 1).TextureView的兄弟SurfaceView 应用 ...

  8. 窥探Swift之函数与闭包的应用实例

    今天的博客算是比较基础的,还是那句话,基础这东西在什么时候都是最重要的.说到函数,只要是写过程序就肯定知道函数是怎么回事,今天就来讨论一下Swift中的函数的特性以及Swift中的闭包.今天的一些小实 ...

  9. Machine Learning

    Recently, I am studying Maching Learning which is our course. My English is not good but this course ...

  10. Solr学习总结(六)SolrNet的高级用法(复杂查询,分页,高亮,Facet查询)

    上一篇,讲到了SolrNet的基本用法及CURD,这个算是SolrNet 的入门知识介绍吧,昨天写完之后,有朋友评论说,这些感觉都被写烂了.没错,这些基本的用法,在网上百度,资料肯定一大堆,有一些写的 ...