iPhone开发【六】常用控件之Picker View
发布日期:2021-09-28 18:46:11
浏览次数:12
分类:技术文章
本文共 6368 字,大约阅读时间需要 21 分钟。
转载请注明出处,原文网址: 作者:张燕广
实现的功能:演示Picker View的使用方法
关键词:Picker View
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:
- //
- // ViewController.h
- // PickersDemo
- //
- // Created by Zhang Yanguang on 12-10-25.
- // Copyright (c) 2012年 MyCompanyName. All rights reserved.
- //
- #import <UIKit/UIKit.h>
- #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、编译、运行,效果如下:
=========================================================================
以下是我实现的,更为简单的单选择器:
//// MyTestViewController.m// MyTest//// Created by H3c on 13-1-4.// Copyright (c) 2013年.H3c All rights reserved.//#import "MyTestViewController.h"@interface MyTestViewController ()@end@implementation MyTestViewController@synthesize picker;@synthesize appleDevices;@synthesize deviceCategory;@synthesize deviceName;- (void)viewDidLoad{ [super viewDidLoad]; NSArray *arr1 = [NSArray arrayWithObjects:@"1",@"5",@"7",@"4", nil] ; // 排序 NSArray *sorted = [arr1 sortedArrayUsingSelector:@selector(compare:)]; self.deviceCategory = sorted; // 设定默认值 [self.picker selectRow:2 inComponent:0 animated:YES];}- (void)viewDidUnload{ picker = nil; appleDevices = nil; deviceCategory = nil; deviceName = nil; [super viewDidUnload];}-(void)dealloc{ [picker release]; [appleDevices release]; [deviceCategory release]; [deviceName release]; [super dealloc];}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning];}- (IBAction)click:(id)sender{ // 获取选中内容 NSString *selectedCategory = [self.deviceCategory objectAtIndex:[self.picker selectedRowInComponent:0]]; UIAlertView *alertV = [[UIAlertView alloc]initWithTitle:@"Note" message:selectedCategory delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:nil, nil]; [alertV show];}// 列数-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ return 1;}// 行数-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ return [self.deviceCategory count];}// Cell内容-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ return [self.deviceCategory objectAtIndex:row];}@end
#import#define one 0;@interface MyTestViewController : UIViewController @property(strong,nonatomic)IBOutlet UIPickerView *picker;@property(nonatomic,retain)NSDictionary *appleDevices;@property(nonatomic,retain)NSArray *deviceCategory;@property(nonatomic,retain)NSArray *deviceName;- (IBAction)click:(id)sender;@end
转载地址:https://blog.csdn.net/h3c4lenovo/article/details/8307249 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年03月30日 20时20分13秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Lua(十六)——文件
2019-04-27
Lua(十七)——面向对象
2019-04-27
Lua(十八)——错误处理,垃圾回收
2019-04-27
xLua(一)——介绍
2019-04-27
xLua(二)——下载
2019-04-27
xLua(三)——在C#中访问Lua代码
2019-04-27
xLua(四)——C#访问Lua的基本类型
2019-04-27
xLua(五)——C#访问Lua的table
2019-04-27
xLua(六)——C#访问Lua的function
2019-04-27
基础知识——常用单位介绍
2019-04-27
xLua(七)——Lua访问C#(一)
2021-06-30
xLua(八)——Lua访问C#(二)
2021-06-30
Unity中实现解析Json文件
2021-06-30
Unity自带Json解析库——JsonUtility
2021-06-30
Unity中使用ViedoPlayer操作视频文件
2021-06-30
C#中的的输入与输出
2021-06-30
C#中@符号的作用
2021-06-30
C#中$符号的作用
2021-06-30
Mac装windows系统后如何更换触控板设置
2021-06-30
Windows系统下如何设置软件的快捷键
2021-06-30