UIPickerView 标签栏与选取器(1)
来源:互联网 发布:php中文网视频下载 编辑:程序博客网 时间:2024/06/08 10:54
本章的内容比较多,中间也遇到不少的麻烦,最后还是摸索出来了,学到了一些东西,但是还有一些东西不知道是为什么,自己学习还是有点难呀,下面我就大致把这一章的东西给概括一下,方便我以后查阅了!
这次用到的模板还是Window-based Application,和上次用的一样。这次我们不用自己创建跟控制器,这次我们来使用apple提供的一个类来管理标签视图,我们用UITabBarController实例来处理跟控制器,下面我会详细讲解。
首先要创建5个类文件,在Classes文件夹上面点右键,然后Add-New File-Cocoa Touch Classes-UIViewController subclass。用同样的方法创建5个nib文件,这次是在Resources文件夹上点击右键了,名字可以自己定,我命的名字是类名:datePicker,singlePicker,doublePicker,dependentPicker,gamePicker。
nib名字:
dateVeiw,singleVeiw,doubleView,dependentVeiw,gameView.
忘了我创建的此项目的名称是IP_07Pick。
文件创建好了。
打开MainWindow.xib向里面拖入一个UITabBarController类,然后Apple+1,添加多个项目,TabBarController默认是2个Items,需要再添加3个。根据自己的需要吧Item1到Item5改成自己想要的名字。下面进行关联。(这个是比较麻烦的事情,我刚开始在这里就弄错了,怎么都出不来结果)
在TabBarController下面的5个项目上双击,要快,这是你会看到inspector里面有几个框,还有一个是image,选中你自己弄好的图片,title也可以在这里修改,然后关联类,不要动,还在这里,Apple+4,在Class里面选择对应的类,这里一个视图对应一个类。我刚开始就是没有选择这个对应关系,结果出错了。一共是5个,慢慢弄,一定要细心。
下面开始再关联一下刚才创建的5个视图,打开每一个视图,关联相应的类,再按住File’s Owner拖到View上,实现关联。这也需要5次,每一个视图都要经过这样的步骤。关联也不能出错。
下面就是添加代码了。
打开IP_07PickAppDelegate.h,添加输出口:
@interface IP_07PickAppDelegate : NSObject <UIApplicationDelegate> {
IBOutlet UIWindow *window;
IBOutlet UITabBarController *bar;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) UITabBarController *bar;
@end
然后打开IP_07PickAppDelegate.m修改代码为
@synthesize window;
@synthesize bar;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window addSubview:bar.view];//添加tabbar
// Override point for customization after application launch
[window makeKeyAndVisible];
}
- (void)dealloc {
[bar release];
[window release];
[super dealloc];
}
然后build and go运行一下,5个视图应该可以切换了。如果不可以切换,就要看看各个视图和tabbar关联的是否正确了,这里关联的东西比较多,容易出错。
下面实现第一个View,日期控件的使用!
打开第一个xib文件,我的是dateView,然后向里面拖入一个UIDataPicker,把它放在最上面,它的宽度正好和IPhone界面一样大,然后放入一个button,调整该view的大小设置搞为411。
在datePicker.h里面定义变量和方法:
@interface datePicker : UIViewController {
IBOutlet UIDatePicker *picker;
}
@property (nonatomic, retain) UIDatePicker *picker;
-(IBAction)click;
@end
然后保存,保存后,关联相关变量。把UIDatePicker picker和click方法关联好。(如何关联在我前面的几章里面有详细的介绍)。关联好进入代码的编写。
打开datePicker.m修改成下面的代码:代码后面有解释
#import "datePicker.h"
@implementation datePicker
@synthesize picker;
-(IBAction)click
{
NSDate *date = [picker date];//得到date picker显示的时间
NSString *stringDate = [[NSString alloc]initWithFormat:@"Picker显示的时间为%@",date];//格式化字符串
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Date" message:stringDate delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];//给出提示
[alert show];
[alert release];
[stringDate release];
}
- (void)viewDidLoad {
NSDate *now = [NSDate date];//得到当前的系统时间
[picker setDate:now animated:YES];//把当前的时间赋值给date picker
}
……
- (void)dealloc
{
[picker release];
[super dealloc];
}
@end
执行一下看看结果吧!
下面进入第二个View,singleView.这个是单个组建选取器。
打开singleView.xib文件,向里面拖入一个UIPickerView和一个Button控件。调整view的大小为411.和上面一样。然后定义变量:打开singlePicker.h文件,修改为下面
@interface singlePicker : UIViewController
<UIPickerViewDelegate, UIPickerViewDataSource>
{
IBOutlet UIPickerView *picker;
NSArray *pickerData;//给picker提供数据的数组
}
@property (nonatomic, retain) UIPickerView *picker;
@property (nonatomic, retain) NSArray *pickerData;
-(IBAction)click;
@end
保存后进行关联。
在picker上面点右键,会弹出一个黑色框,上面显示有dataSource和delegate,选中拖入File‘s Owner上面,这样就让控制器充当选取器的数据源和委托。
下面编写代码了。
打开singlePicker.m文件,修改成下面
@implementation singlePicker
@synthesize picker;
@synthesize pickerData;
-(IBAction)click
{
NSInteger row = [picker selectedRowInComponent:0];//得到picker当前的行号
NSString *select = [pickerData objectAtIndex:row];//得到picker当前行显示的内容
NSString *message = [[NSString alloc]initWithFormat:@"你选中的是%@!",select];//格式化字符串
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Picker" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[select release];
[message release];
[alert release];
}
-(void)viewDidLoad
{
NSArray *array=[[NSArray alloc] initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"0",nil];//初始化一个数组,给picker提供数据
self.pickerData = array;
[array release];
}
……
- (void)dealloc {
[picker release];
[pickerData release];
[super dealloc];
}
#pragma mark -
#pragma mark picker Data Source Methods
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;//返回选取器包含的滚轮数
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return [pickerData count];//返回选取器数据的行数
}
#pragma mark picker Delegate Methods
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [pickerData objectAtIndex:row];//实现委托返回当前行的数据
}
@end
最下面的3个新方法是选取器所需的,为什么要这样,我也不清楚,先记住呗,就这样了。
运行看结果:
- UIPickerView 标签栏与选取器(1)
- UIPickerView 标签栏与选取器(2)
- 标签栏与选取器
- UIPickerView 选取器(滚轮)
- UIPickerView选取器详解
- UI -- UIPickerView选取器
- IOS入门学习(七):标签栏与选取器
- ios之选取器与标签栏
- UIPickerView 选取器(滚轮)—IOS开发
- UIPickerView 选取器(滚轮)—IOS开发
- UIPickerView 选取器(滚轮)—IOS开发
- UIPickerView 选取器(滚轮)—IOS开发
- UIPickerView 选取器(滚轮)—IOS开发
- Iphone开发基础教程 (7章 标签栏与选取器)--读书笔记
- iPhone开发基础教程笔记(六)--第七章 标签栏与选取器
- iOS中动态密码(倒计时按钮)按钮Block封装,选取器(UIPickerView)的Block封装,日期选取器(UIDatePicker)的Block封装
- iOS开发7-分页栏与选取器
- css标签选取属性
- iPhone绘图
- 批处理怎样替换文件夹下所有文本内容?
- IOS 重力感应的实现
- 开发随笔-最近想做什么呢??
- USACO / Money Systems货币系统(DP)
- UIPickerView 标签栏与选取器(1)
- 定位IOWait高的一些方法和工具
- UIPickerView 标签栏与选取器(2)
- ubuntu12.04 gnome
- 系统引导期间查找 rootfs技巧
- 域名新生意:ICANN新规引发互联网疆域战争
- pickerView的一些用法
- vnc,自己刚用起来
- UIPickerView的用法总结