IOS开发-UIDatePicker和UIPickerView(拾取器)

外观及作用

                   

UIDatePicker和事件相关,用来设置时间,选择时间等。UIPickerView则是自定义的,可以用作下拉列表等


运行结果

本示例主要简示了这些拾取器的用法,效果图如下所示(改成Iphone4大小了):

        


构建概要

1.新建基本视图或者基于TabView的工程,如果是基本的工程,需要额外操作转换为TabView,方法为:打开Main.storyboard,选中视图,然后在Xcode的菜单中Edit->Ebeded in->Tab View即可转换为TabView视图,如下图所示(gif录制真是拙计)。


2.新建一个视图,用作Single的界面。方法:拉一个PickView控件,从TabViewController拉一条直线到新建的View选中View Controller选项把新建的视图链接到TabView里面去。


3.给Single视图新建控制类,该类需要实现UIPickerViewDelegate, UIPickerViewDataSource及其对应的方法。(Single共需要实现3个方法)

4.连接Single控制类和Single界面,点击视图界面,修改视图左上方的Controller属性中的类为Single控制类名。


5.略


主要代码

h文件

//
//  CombineViewController.h
//  PickerViewDemo
//
//  Created by God Lin on 14/12/3.
//  Copyright (c) 2014??? arbboter. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface CombineViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource>
{
    IBOutlet UIPickerView* _pickerView;
    NSArray* _arrayTeam;
    NSArray* _arrayTeamer;
    NSDictionary* dicData;
}

@property (nonatomic, retain) NSDictionary* _dicData;
@property (nonatomic, retain) UIPickerView* _pickerView;
@property (nonatomic, retain) NSArray* _arrayTeam;
@property (nonatomic, retain) NSArray* _arrayTeamer;

-(IBAction)onClick:(id)sender;
@end

m文件

//
//  CombineViewController.m
//  PickerViewDemo
//
//  Created by God Lin on 14/12/3.
//  Copyright (c) 2014年 arbboter. All rights reserved.
//

#import "CombineViewController.h"

@interface CombineViewController ()

@end

@implementation CombineViewController

@synthesize _pickerView;
@synthesize _dicData;
@synthesize _arrayTeam;
@synthesize _arrayTeamer;


#pragma mark UIPickerViewDelegate的协议
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    NSString* title = nil;
    // 返回行数
    switch (component) {
        case 0:
            title = [_arrayTeam objectAtIndex:row];
            break;
        case 1:
            title = [_arrayTeamer objectAtIndex:row];
            break;
        default:
            break;
    }
    return title;
}

-(NSArray*)getTeamer:(NSInteger)row
{
    // 模拟字典数据
    //[NSArray arrayWithObjects:@"红队", @"白队", @"绿队", @"蓝队", nil];
    NSArray* teamer = nil;
    switch (row)
    {
        case 0:
            teamer = [NSArray arrayWithObjects:@"红队1", @"红队2", @"红队3", nil];
            break;
        case 1:
            teamer = [NSArray arrayWithObjects:@"白队1", @"白队2", @"白队3", @"白队4", nil];
            break;
        case 2:
            teamer = [NSArray arrayWithObjects:@"绿队1", @"绿队2", @"绿队3",  @"绿队4", @"绿队5", @"绿队6", nil];
            break;
        case 3:
            teamer = [NSArray arrayWithObjects:@"蓝队1", @"蓝队2", @"蓝队3", @"蓝队4", @"蓝队5", @"蓝队6", @"蓝队7", @"蓝队8", nil];
            break;
        default:
            teamer = [NSArray arrayWithObjects:@"其他1", nil];
            break;
    }
    return teamer;
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    switch (component)
    {
        case 0:
            _arrayTeamer = [self getTeamer:row];
            [self._pickerView reloadComponent:1];
            break;
            
        default:
            break;
    }
}


#pragma mark UIPickerViewDataSource的协议
// 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
{
    NSInteger nRet = 0;
    // 返回行数
    switch (component) {
        case 0:
            nRet = [_arrayTeam count];
            break;
        case 1:
            nRet = [_arrayTeamer count];
            break;
        default:
            break;
    }
    return nRet;
}

-(IBAction)onClick:(id)sender
{
    
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    NSArray* team = [NSArray arrayWithObjects:@"红队", @"白队", @"绿队", @"蓝队", nil];
    
    NSArray* teamer = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
    _arrayTeam = team;
    _arrayTeamer = teamer;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end

代码工程链接

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。