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

代码工程链接

时间: 2024-10-12 21:35:24

IOS开发-UIDatePicker和UIPickerView(拾取器)的相关文章

iOS开发UI篇—UIPickerView控件简单介绍

iOS开发UI篇—UIPickerView控件简单介绍 一.UIPickerView 控件 1.简单介绍: 2.示例代码 TXViewController.m文件 1 // Created by 鑫 on 14-10-15. 2 3 // Copyright (c) 2014年 梁镋鑫. All rights reserved. 4 5 // 6 7 8 9 #import "TXViewController.h" 10 11 12 13 @interface TXViewContro

iOS开发练习之UIPickerView实现歌词翻滚效果

麻雀虽小,五脏俱全.在平时的项目中,任何一个模块或者功能里其实都隐藏着许多我们平时注意不到的知识点,其实很多东西大家每天都在用,但很多时候都是知其然,而不知其所以然.时间久了,也就懒得去想到底是什么原因了,怎么实现的之类.回想自己的学习路程,也基本都这样混过来,实在愧对光阴,近日抽空,查看过往笔记,顺手写了个小代码练习,感觉温故知新.现分享代码,以供新手入门参考,尤其其中错误的部分也很有广泛性.同时也欢迎各路成精的老鸟们喷吐,能够指正,这样也促进我再进步一点. ViewController.m文

IOS开发之简单音频播放器

今天第一次接触IOS开发的UI部分,之前学OC的时候一直在模拟的使用Target-Action回调模式,今天算是真正的用了一次.为了熟悉一下基本控件的使用方法,和UI部分的回调,下面开发了一个特别简易的音频播放器,来犒劳一下自己这一天的UI学习成果.在用到UI的控件时如果很好的理解之前博客在OC中的Target-Action回调模式,感觉控件的用法会很顺手.下面的简易播放器没有用到多高深的技术,只是一些基本控件和View的使用. 话不多说简单的介绍一下今天的音频播放器.在播放器中我们用到了UIP

iOS开发--UIDatePicker

UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样就让开发者不必关心如何配置表盘这样的底层操作.你也可以对其进行定制,令其使用任何范围的日期. UIDatePicker 依赖于 NSDate 类,这个类是cocoa 基础的一员,以前用于桌面系统.本文中仅需用到 initWithString 来创建NSDate 所以NSDate 留待专题讲解,你只需

ios开发:一个音乐播放器的设计与实现

github地址:https://github.com/wzpziyi1/MusicPlauer 这个medo,关于歌曲播放的主要功能都实现了的.下一曲.上一曲,暂停,根据歌曲的播放进度动态滚动歌词,将当前正在播放的歌词放大显示,拖动进度条,歌曲跟着变化,并且使用Time Profiler进行了优化,还使用XCTest对几个主要的类进行了单元测试. 已经经过真机调试,在真机上可以后台播放音乐,并且锁屏时,显示一些主要的歌曲信息. 首页: 歌曲内部播放: 当拖动小的进度条的时候,歌曲也会随之变化.

iOS开发-数据选择UIPickerView

UIPickerView开发一般选择区域或者分级数据的时候会使用到,类似于前端中用到树状结构,不过PC上一般都是从上到下的分级,使用UIPickView是从左到右实现,可以动态的设置UIPickView中中行列数据,将结果显示在文本输入框里,简单的定义一下数据源.通过声明协议捕获事件,展示结果,比较简单,进入正题. 页面布局 页面布局比较简单,一个UIPickerView,一个文本框: 头文件中的声明,实现了UIPickerViewDelegate,UIPickerViewDataSource协

iOS开发中的UIPickerView

UIPickerView UIPickerView的常见属性 // 数据源(用来告诉UIPickerView有多少列多少行) @property(nonatomic,assign) id<UIPickerViewDataSource> dataSource; // 代理(用来告诉UIPickerView每1列的每1行显示什么内容,监听UIPickerView的选择) @property(nonatomic,assign) id<UIPickerViewDelegate> deleg

精通IOS开发-分页栏和选取器的使用

一.分页栏 创建一个新的项目,Subclass of的值选中UIViewController,然后在storyboard中删除根视图,在右下方拖出一个Tab Bar Controller 新增分页,只需从右下方拖出一个普通的View Controller,按住鼠标右键从分页栏控制器拖动到新视图控制器上释放,在弹出面板中的Relationship Segue标题下选中view controllers,使用这些分页要给他们创建Cocoa Touch Class 并关联. 设置分页栏底部的标题与图标,

iOS开发-简单的图片查看器

现在你只要拿着手机,不管你Android还是iOS,新闻类的App不可避免都有一个功能就是图片查看,做个专题,查看一下内容,App Store中也有专门针对图片浏览的App,鉴于目前所知有限,无法做到那么高大上的App,简单的做个美女查看的Demo.没有太多的功能,上一张,下一张,标签,图片,简简单的,深刻的感觉到知识就是力量,目前知识有限的结果就是Demo简单,且学且珍惜吧. 1.新建项目(如果不会可以参考本人之前的文章),然后在StoryBoard中进行布局,将Girl文件夹中的图片拖入项目