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
正在加载信息~
推荐阅读
iPhone开发——Tab Bar
最新回复 (0)
站点信息
- 文章2300
- 用户1336
- 访客10861715
每日一句
True success inspires others to act.
真正的成功是激励他人行动。
真正的成功是激励他人行动。
语法错误: 意外的令牌“标识符”
全面理解Gradle - 定义Task
Motrix全能下载工具 (支持 BT / 磁力链 / 百度网盘)
谷歌Pixel正在开始起飞?
获取ElementUI Table排序后的数据
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is
亲测!虚拟机VirtualBox安装MAC OS 10.12图文教程
华为手机app闪退重启界面清空log日志问题
android ndk开发之asm/page.h: not found
手机屏幕碎了怎么备份操作?
免ROOT实现模拟点击任意位置
新手必看修改DSDT教程
thinkpad t470p装黑苹果系统10.13.2
新会员