1、创建一个Single View Application工程,命名为:PickersDemo,如下图
2、修改ViewController.xib,添加一个Picker View和一个Button控件,如下
连接输出口、操作,如下
3、视图控制器ViewController,需要实现协议UIPickerViewDataSource、UIPickerViewDelegate中的必须实现的方法,
在工程目录依次展开Frameworks->UIKit.framework->Headers,然后打开UIPickerView.h,在文件的尾部可以看到协议UIPickerViewDataSource、UIPickerViewDelegate的定义,如下
4、修改ViewController.h:
5、修改ViewController.m:
6、编译、运行,效果如下:

2、修改ViewController.xib,添加一个Picker View和一个Button控件,如下

连接输出口、操作,如下

3、视图控制器ViewController,需要实现协议UIPickerViewDataSource、UIPickerViewDelegate中的必须实现的方法,
在工程目录依次展开Frameworks->UIKit.framework->Headers,然后打开UIPickerView.h,在文件的尾部可以看到协议UIPickerViewDataSource、UIPickerViewDelegate的定义,如下

4、修改ViewController.h:
// // ViewController.h // PickersDemo // // Created by Zhang Yanguang on 12-10-25. // Copyright (c) 2012年 MyCompanyName. All rights reserved. // #import#define kDeviceCategory 0 #define kDeviceName 1 @interface ViewController : UIViewController @property(strong,nonatomic)IBOutlet UIPickerView *picker; @property(nonatomic,retain)NSDictionary *appleDevices; @property(nonatomic,retain)NSArray *deviceCategory; @property(nonatomic,retain)NSArray *deviceName; -(IBAction)buttonPressed:(id)sender; @end
5、修改ViewController.m:
//
// ViewController.m
// PickersDemo
//
// Created by Zhang Yanguang on 12-10-25.
// Copyright (c) 2012年 MyCompanyName. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize picker;
@synthesize appleDevices;
@synthesize deviceCategory;
@synthesize deviceName;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSArray *array1 = [NSArray arrayWithObjects:@"iPhone",@"iPad",@"iPod",nil];
NSArray *array2 = [NSArray arrayWithObjects:@"Mac",@"iMac",@"Mac Mini",@"Mac Pro",nil];
NSDictionary *dictionary= [NSDictionary dictionaryWithObjectsAndKeys:array1,@"Mobile",array2,@"Computers",nil];//注意用nil结束
appleDevices = [[NSDictionary alloc]initWithDictionary:dictionary copyItems:YES];
NSArray *components = [self.appleDevices allKeys];
NSArray *sorted = [components sortedArrayUsingSelector:@selector(compare:)];
self.deviceCategory = sorted;
NSString *selectedCategory = [self.deviceCategory objectAtIndex:0];
self.deviceName = [self.appleDevices objectForKey:selectedCategory];
}
- (void)viewDidUnload
{
[super viewDidUnload];
picker = nil;
appleDevices = nil;
deviceCategory = nil;
deviceName = nil;
// Release any retained subviews of the main view.
}
-(void)dealloc{
[picker release];
[appleDevices release];
[deviceCategory release];
[deviceName release];
}
-(IBAction)buttonPressed:(id)sender{
NSString *selectedCategory = [self.deviceCategory objectAtIndex:[self.picker selectedRowInComponent:kDeviceCategory]];
NSString *selectedDevice = [self.deviceName objectAtIndex:[self.picker selectedRowInComponent:kDeviceName]];
//NSLog(@"%@-%@",selectedCategory,selectedDevice);
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"结果" message:[NSString stringWithFormat:@"%@:%@",selectedCategory,selectedDevice] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
#pragma mark Picker View DataSource methods
// returns the number of 'columns' to display.
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 2;
}
// returns the # of rows in each component..
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
if(component == kDeviceCategory){
return [self.deviceCategory count];
}else{
return [self.deviceName count];
}
}
#pragma mark Picker View Delegate methods
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
if(component == kDeviceCategory){
return [self.deviceCategory objectAtIndex:row];
}else{
return [self.deviceName objectAtIndex:row];
}
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
if(component == kDeviceCategory){
NSString *selectedCategory = [self.deviceCategory objectAtIndex:row];
NSArray *array = [self.appleDevices objectForKey:selectedCategory];
self.deviceName = array;
[self.picker selectRow:0 inComponent:kDeviceName animated:YES];
[self.picker reloadComponent:kDeviceName];
}
}
@end
6、编译、运行,效果如下:


收藏的用户(0) X
正在加载信息~
推荐阅读
最新回复 (0)
站点信息
- 文章2313
- 用户1336
- 访客11744859
每日一句
Life is 10% what happens to us and 90% how we react to it.
生活的10%是发生在我们身上的事,而90%是我们对它的反应。
生活的10%是发生在我们身上的事,而90%是我们对它的反应。
jQuery打造漂亮的幻灯片效果
Linux查看进程及相关操作常用命令
解决安卓运行错误Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug
华为:你硬要打压,我偏要强大!
thinkpad t470p装黑苹果系统10.13.2
Android常用的数学函数说明
Android Studio使用DB Browser查看SQLite数据库
使用Putty上传文件?
关于IDEA的Spring boot项目创建慢,Maven插件加载慢,依赖导入慢或者失败的原因及解决方案
imencode和imdecode使用
element-UI组件实现拖拽效果
【教程】手把手教你开通淘小铺赚佣金
Android简单树状实现
新会员