当前位置:编程学习 > wap >>

IOS学习六:Date Picker, Picker View选取器控件初步

Date Picker控件和Picker View控件其实也是算比较常用到视图。
以下根据红柚子上得几个例子:
分别从(日期选取器)Date Picker   ——>单部件选取器——>多部件选取器——>依赖组建选取器。
这边我们不是一步步从创建一个项目开始,毕竟有过前面两三次的实践后,
对于如何选择性的创建一个最合适的应用基础模板已经很简单了。
这边为了方便视图切换,我们用了前面用到过的TabBarController视图控制器。
下面是对以上4种分别举个小例子

一:日期选取器

就是很简单一个日期组建,触摸滚轮可以选取时间,点击确认弹出你选中得时间。
(不过不知道什么情况,感觉有貌似我这个显示怎么出了个8小时的时差~~,不知道是模拟器还是哪边要设置,比如Android会有个设置系统时区什么的)。
我们先不管这个,这几界面就很简单。我们就看到一个datePicker控件和一个确认控件么(这个都知道在xib文件右边拖拽进来吧)
[cpp]
// 
//  NonoFirstViewController.h 
//  MultiViews 
// 
//  Created by Nono on 12-4-19. 
//  Copyright (c) 2012年 NonoWithLilith. All rights reserved. 
// 
 
#import <UIKit/UIKit.h> 
 
@inte易做图ce NonoFirstViewController : UIViewController 

    UIDatePicker *datePicker; 
  

@property(nonatomic, retain) IBOutlet UIDatePicker *datePicker;//日期选取器 
-(IBAction)buttonPressed:(id)sender;//按钮操作 
@end 

头文件我们定义了这一个输出口和一个按钮事件
[cpp]
// 
//  NonoFirstViewController.m 
//  MultiViews 
// 
//  Created by Nono on 12-4-19. 
//  Copyright (c) 2012年 NonoWithLilith. All rights reserved. 
// 
#import "NonoFirstViewController.h" 
 
@implementation NonoFirstViewController 
@synthesize datePicker; 
-(IBAction)buttonPressed:(id)sender 

    NSDate * selected = [self.datePicker date];//获取选取时间 
    NSString *date = [[NSString alloc] initWithFormat:@"你选择了:%@",selected]; 
    UIAlertView * alterView = [[UIAlertView alloc] initWithTitle:@"时间提示" message:date delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil]; 
    [alterView show]; 
     

 
- (void)viewDidLoad 

    [super viewDidLoad]; 
    NSDate *now = [[NSDate alloc] init]; 
    [datePicker setDate:now animated:YES]; 
    // Do any additional setup after loading the view from its nib. 

 
 
 
@end 

实现文件也很简单,基本没什么说的,因为这个控件我们跳进datePicker的头文件,发现其实他就是一种pickerView的封装实现。
对于我们来说,使用范围就比较局限性。看他的类名我们就知道了。
因此很多时候,我们都会需要自定义Picker View

二:Picker View组件

这个就是一个单部件的picker View。
根据我们的思路或是一些开发经验。
看到这么一个东西,大致可以知道:第一,有个展示界面(也就是我们拖进去的PickerView)
第二,需要有填充这个界面的数据源
第三,需要一个我们对该控件相关操作的控制者。
有过Android开发的朋友也该很容易联想到一个东西,就是Adapter,适配器。
其实ios这个也是差不多。
这边提一点,其实IOS这种适配模式等你接触后,就会恍然大悟的发现,就这么一个模式。
一个视图,实现一个数据源协议,实现一个(控制器代理)。
基本所有类似组建得表现形式和操作都是这三者的结合。(MVC模式啊,代理模式啊什么,这算吧,也挺形象了)
废话不多说,先看下头文件
[cpp]
// 
//  NonoSecondViewController.h 
//  MultiViews 
// 
//  Created by Nono on 12-4-19. 
//  Copyright (c) 2012年 NonoWithLilith. All rights reserved. 
// 
 
#import <UIKit/UIKit.h> 
 
@inte易做图ce NonoSecondViewController : UIViewController 
<UIPickerViewDelegate,UIPickerViewDataSource>//协议:选取器得数据源,和委托 

    UIPickerView * pickerView; 
    NSArray *pickerData; 

@property(nonatomic,retain) NSArray *pickerData; 
@property(nonatomic, retain) IBOutlet UIPickerView  *pickerView; 
-(IBAction)buttonPressed:(id)sender; 
 
@end 
申明了需要实现的两个 <UIPickerViewDelegate,UIPickerViewDataSource>
就是我们上面提到的。
多了一个属性申明 一个数组。等会用于存放数据源。
[cpp]
// 
//  NonoSecondViewController.m 
//  MultiViews 
// 
//  Created by Nono on 12-4-19. 
//  Copyright (c) 2012年 NonoWithLilith. All rights reserved. 
// 
 
#import "NonoSecondViewController.h" 
 
@implementation NonoSecondViewController 
@synthesize pickerData; 
@synthesize pickerView; 
 
//实现申明方法 
-(void)buttonPressed:(id)sender 

    NSInteger row = [pickerView selectedRowInComponent:(0)]; 
    NSString *selected = [pickerData objectAtIndex:row]; 
    NSString *title = [[NSString alloc] initWithFormat:@"你选择的:%@!",selected]; 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:title delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
    [alert show]; 
     

 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
        // Custom initialization 
    } 
    return self; 

 
- (void)viewDidLoad 
{  //初始化数据源数据 
       [super viewDidLoad]; 
    NSArray *array = [[NSArray alloc] initWithObjects:@"陈凯", @"至尊宝",@"菩提老祖",@"二当家",@"紫霞仙子",@"蜗牛",nil]; 
    self.pickerData = array; 
     
 
      // Do any additional setup after loading the view from its nib. 

 
- (void)viewDidUnload 

    [super viewDidUnload]; 
    self.pickerData = nil; 
    self.pickerView = nil; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 

 
- (BOOL)shouldAutorotateToInte易做图ceOrientation:(UIInte易做图ceOrientation)inte易做图ceOrientation 

    return (inte易做图ceOrientation == UIInte易做图ceOrientationPortrait); 

 
#pragma mark - 
#pragma mark Picker Data Source Methods 
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 

    return (1); 

- (NSInteger)pickerView:(UIPickerView *)pickerView

补充:移动开发 , 其他 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,