- 浏览: 534396 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tangyunliang:
大哥你太历害了谢谢
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
u013015029:
LZ,请问下,在// 添加消息到聊天窗口 , 这里获取Ed ...
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
endual:
怎么保持会话,我搞不懂啊
Android基于XMPP Smack Openfire开发IM【一】登录openfire服务器 -
donala_zq:
显示:[2013-11-30 11:50:36 - Andro ...
android-----------新浪微博 -
donala_zq:
哥,运行不了啊
android-----------新浪微博
本篇实现功能是两个选取器的关联操作,滚动第一个滚轮第二个滚轮内容随着第一个的变化而变化,然后点击按钮触发一个动作;工程是在 代码实现UIPickerView 一文中基础上修改的,建工程就不多说,先把效果图贴出来:
[img]
[/img]
[img]
[/img]
1.首先在工程中建一个songInfo.plist文件,储存数据,
[img]
[/img]
添加的内容是:
[img]
[/img]
2.在ViewController.h定一个选取器pickerView对象,两个数组,存放选取器数据和一个字典,读取plist文件
3.在ViewController.m文件中ViewDidLoad完成初始化
首先定义两个宏定义,分别表示两个选取器的索引序号值,放在 #import "ViewController.h"后面
#define singerPickerView 0
#define singPickerView 1
按钮事件设置 :
4.关于两个协议的代理方法 :
在这个方法中,-(void)pickerView:(UIPickerView *)pickerViewt didSelectRow:(NSInteger)row inComponent:(NSInteger)component ,我把(UIPickerView *)pickerView参数改成了(UIPickerView *)pickerViewt,因为我定义的pickerView对象和参数发生冲突,所以把参数给改了下;
[img]
[/img]
[img]
[/img]
1.首先在工程中建一个songInfo.plist文件,储存数据,
[img]
[/img]
添加的内容是:
[img]
[/img]
2.在ViewController.h定一个选取器pickerView对象,两个数组,存放选取器数据和一个字典,读取plist文件
#import <UIKit/UIKit.h> @interface ViewController : UIViewController<UIPickerViewDelegate,UIPickerViewDataSource> { //定义滑轮组建 UIPickerView *pickerView; // 储存第一个选取器的的数据 NSArray *singerData; // 储存第二个选取器 NSArray *singData; // 读取plist文件数据 NSDictionary *pickerDictionary; } -(void) buttonPressed:(id)sender; @end
3.在ViewController.m文件中ViewDidLoad完成初始化
首先定义两个宏定义,分别表示两个选取器的索引序号值,放在 #import "ViewController.h"后面
#define singerPickerView 0
#define singPickerView 1
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, 320, 216)]; // 指定Delegate pickerView.delegate=self; pickerView.dataSource=self; // 显示选中框 pickerView.showsSelectionIndicator=YES; [self.view addSubview:pickerView]; // 获取mainBundle NSBundle *bundle = [NSBundle mainBundle]; // 获取songInfo.plist文件路径 NSURL *songInfo = [bundle URLForResource:@"songInfo" withExtension:@"plist"]; // 把plist文件里内容存入数组 NSDictionary *dic = [NSDictionary dictionaryWithContentsOfURL:songInfo]; pickerDictionary=dic; // 将字典里面的内容取出放到数组中 NSArray *components = [pickerDictionary allKeys]; //选取出第一个滚轮中的值 NSArray *sorted = [components sortedArrayUsingSelector:@selector(compare:)]; singerData = sorted; // 根据第一个滚轮中的值,选取第二个滚轮中的值 NSString *selectedState = [singerData objectAtIndex:0]; NSArray *array = [pickerDictionary objectForKey:selectedState]; singData=array; // 添加按钮 CGRect frame = CGRectMake(120, 250, 80, 40); UIButton *selectButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; selectButton.frame=frame; [selectButton setTitle:@"SELECT" forState:UIControlStateNormal]; [selectButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:selectButton]; }
按钮事件设置 :
-(void) buttonPressed:(id)sender { // 获取选取器某一行索引值 NSInteger singerrow =[pickerView selectedRowInComponent:singerPickerView]; NSInteger singrow = [pickerView selectedRowInComponent:singPickerView]; // 将singerData数组中值取出 NSString *selectedsinger = [singerData objectAtIndex:singerrow]; NSString *selectedsing = [singData objectAtIndex:singrow]; NSString *message = [[NSString alloc] initWithFormat:@"你选择了%@的%@",selectedsinger,selectedsing]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:message delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; [alert show]; }
4.关于两个协议的代理方法 :
#pragma mark - #pragma mark Picker Date Source Methods //返回显示的列数 -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { // 返回几就有几个选取器 return 2; } //返回当前列显示的行数 -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { if (component==singerPickerView) { return [singerData count]; } return [singData count]; }
#pragma mark Picker Delegate Methods //返回当前行的内容,此处是将数组中数值添加到滚动的那个显示栏上 -(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { if (component==singerPickerView) { return [singerData objectAtIndex:row]; } return [singData objectAtIndex:row]; }
-(void)pickerView:(UIPickerView *)pickerViewt didSelectRow:(NSInteger)row inComponent:(NSInteger)component { // 如果选取的是第一个选取器 if (component == singerPickerView) { // 得到第一个选取器的当前行 NSString *selectedState =[singerData objectAtIndex:row]; // 根据从pickerDictionary字典中取出的值,选择对应第二个中的值 NSArray *array = [pickerDictionary objectForKey:selectedState]; singData=array; [pickerView selectRow:0 inComponent:singPickerView animated:YES]; // 重新装载第二个滚轮中的值 [pickerView reloadComponent:singPickerView]; } }
//设置滚轮的宽度 -(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component { if (component == singerPickerView) { return 120; } return 200; }
在这个方法中,-(void)pickerView:(UIPickerView *)pickerViewt didSelectRow:(NSInteger)row inComponent:(NSInteger)component ,我把(UIPickerView *)pickerView参数改成了(UIPickerView *)pickerViewt,因为我定义的pickerView对象和参数发生冲突,所以把参数给改了下;
发表评论
-
新风作浪博客学习(十九)在iOS虚拟键盘上添加动态隐藏按钮
2013-06-08 09:19 859为了给用户比较良好的交付,想在键盘上添加一个按钮,实时根据键盘 ... -
新风作浪博客学习(十八)openURL的使用(iOS调用系统电话、浏览器、地图、邮件等) .
2013-06-08 09:19 1003今天遇见一行代码实现打开一个网页,比起印象里的UIWebVie ... -
新风作浪博客学习(十七)UIImageView响应点击事件 .
2013-06-08 09:19 703有时候会遇到点击一张图片,然后让这张图片触发一个事件,或者是跳 ... -
新风作浪博客学习(十六)Navigation + Tab Bar 常用组合框架 .
2013-06-07 08:50 1248看到很多项目中都采用的是Navigation加Tab Bar组 ... -
新风作浪博客学习(十五)google地图定位小Demo .
2013-06-07 08:50 1138[img][/img]今天写的是一个简单功能的google地图 ... -
新风作浪博客学习(十四)怎样向iPhone模拟器中添加图片 .
2013-06-07 08:50 785在我们做项目中可能需要使用图库,模拟器是有图库的,但是如何像其 ... -
新风作浪博客学习(十三)表视图的分组分区和索引分区 .
2013-06-07 08:50 796本次实现的是表视图的分区和索引,代码和前面都差不多,主要还是代 ... -
新风作浪博客学习(十二)代码实现UITableViewCell表视图单元定制 .
2013-06-07 08:49 997通常情况下我们会希望单元格UITableViewCell显示自 ... -
新风作浪博客学习(十一)UITableViewCell的标记、移动、删除、插入 .
2013-06-06 09:15 1115这篇文章是建立在 代码实现 UITableView与UITa ... -
新风作浪博客学习(十)代码实现 UITableView与UITableViewCell .
2013-06-06 09:14 1153我们常用的表格类视图就是用 UITableView与UITab ... -
新风作浪博客学习(八)代码实现UIPickerView .
2013-06-06 09:14 1282先说一下当个组件选取器,我们创建一个数组NSAray来保存选取 ... -
新风作浪博客学习(七)代码 实现UIDatePicker控件 和 Tab Bar 视图切换 .
2013-06-06 09:15 1107感觉代码写控件都一个理,先在ViewDidLoad中创建控件对 ... -
新风作浪博客学习(六)ios 视图切换翻页效果 .
2013-06-05 11:18 1060本文写的是视图切换,涉及到的内容有 1.实现代码添加Navi ... -
新风作浪博客学习(五)代码实现UISlider 和 UISwitch .
2013-02-18 09:15 1148本次实现的UISlider和UISwi ... -
新风作浪博客学习(四)把plist里数据显示在textField上 .
2013-02-18 09:15 916在代码实现Lable 、textFie ... -
新风作浪博客学习(三)NSBundle读取图片 plist文件和txt文件
2013-02-18 09:15 1727本文想简单介绍一下NSBundle读取图片到视图上,读取pli ... -
新风作浪博客学习(二)代码实现Lable 、textField创建界面以及键盘的处理
2013-02-18 09:15 1173今天写的是用代码实现一个简单界面,代码重复率比较高,可读性不是 ... -
新风作浪博客学习(一)plist文件读写操作
2013-02-18 09:14 1361文件plist 全名Property List,属性列表文件, ... -
GCDiscreetNotificationView提示视图
2013-06-05 11:17 559先看一下效果图: [img] ... -
iphone开发之适配iphone5
2013-06-05 11:15 1092iphone5出来了,从不用适配的我们也要像android一样 ...
相关推荐
当需要实现两个UIPickerView之间的数据依赖时,情况变得稍微复杂,但也是完全可行的。这种场景常见于当一个picker的选择会影响到另一个picker的显示内容或者范围。 首先,我们需要理解UIPickerView的基本工作原理。...
C-基于UIPickerView的列表选择.zipObject-C-基于UIPickerView的列表选择.zipObject-C-基于UIPickerView的列表选择.zipObject-C-基于UIPickerView的列表选择.zipObject-C-基于UIPickerView的列表选择.zipObject-C-...
UIPickerView控件学习_点菜系统中的foods.plist文件
UIPickerView控件学习_省市联动中的素材(provinces.plist文件)
【标题】"IOS应用源码Demo-自定义风格UIPickerView-毕设学习"是一个针对iOS平台的应用程序源代码示例,重点展示了如何为UIPickerView定制独特样式,以适应不同设计需求或个人喜好。在iOS开发中,UIPickerView是常见...
在iOS开发中,UIPickerView是一个非常常见的组件,它用于展示一系列可滚动的行,用户可以从这些行中选择一个或多个选项。这个压缩包“IOS应用源码——UIPickerView选择多个选项效果.zip”显然是一个关于如何实现...
在iOS应用开发中,UIPickerView 是一个非常重要的控件,它用于展示一系列可滚动的选项,用户可以从中选择一个或多个值。本教程将详细解释如何在Swift中使用UIPickerView,通过“ios-swift-demo10-选择框...
开发者需要实现这两个协议的方法,如`numberOfComponents(in:)`来定义选择器的列数,`pickerView(_:numberOfRowsInComponent:)`来设定每列的行数,以及`pickerView(_:titleForRow:forComponent:)`来提供每行显示的...
总之,“ios-时间选择器 (UIPickerView).zip”是一个关于如何使用UIPickerView创建时间选择器的示例项目,通过这个项目,开发者可以学习到如何自定义UIPickerView,实现时间选择功能,并处理相关的用户交互。...
UIPickerView是苹果iOS SDK中的一个控件,它提供了一个垂直滚动的列表,用户可以通过滚动来选取一个或多个值。它常用于日期选择、时间选择或者下拉菜单等场景。 2. **多选功能实现**: 在iOS中,UIPickerView默认...
**UIPickerView**是iOS平台上一个重要的用户界面控件,用于展示一系列可滚动的选择项,通常用于让用户在多个选项中做出选择。它的工作原理类似于一个小型的轮盘,用户可以垂直滚动来查看并选择其中的某一项。在iOS...
`UIPickerView`的运作离不开两个关键角色:数据源(`datasource`)和代理(`delegate`)。数据源负责提供`UIPickerView`要显示的数据,而代理则处理用户交互和视图的布局。 - 数据源方法: - `numberOfComponents...
在代码中创建时,通常会用到`UIPickerView`类的初始化方法,然后设置其代理和数据源,这两个协议(`UIPickerViewDelegate` 和 `UIPickerViewDataSource`)定义了如何与PickerView交互并提供数据。 描述中提到的...
1. 创建一个新的UIView子类,如`CityPickerView`,并添加两个`UIPickerView`实例作为其子视图。 2. 在`CityPickerView`类中实现`UIPickerViewDataSource`和`UIPickerViewDelegate`协议,以提供数据和处理用户交互。 ...
这两个协议定义了一系列方法,用来提供UIPickerView的数据和交互逻辑。 ```swift extension ViewController: UIPickerViewDelegate, UIPickerViewDataSource { // 数据源方法 func numberOfComponents(in ...
在iOS开发中,UIPickerView和UIDatePicker是两种常用的组件,用于用户选择数据或设置日期。本教程将深入探讨如何在iOS应用中自定义这两种控件,并添加动画效果,以提升用户体验。以下是对这个主题的详细讲解: 首先...
综上所述,`ios-UIPickerView.zip` 提供了一个使用Swift 3.0封装的UIPickerView示例,利用闭包简化了值传递,适合初学者理解和学习如何在iOS应用中集成和使用选择器。通过阅读和实践这个Demo,开发者可以更好地掌握...