iOS UIPickerView的简单使用

UIPickerView控件在给 用户选择某些特定的数据时经常使用到,这里演示一个简单的选择数据,显示在UITextField输入框里,把UIPickerView作为输入 View,用Toolbar作为选定数据的按钮。和其他UITableView控件相似,UIPickerView也需要数据源。

我们要实现的效果如下:

下面开始使用的步骤。

1、打开XCode,新建一个Single View Application ,命名为PickerViewDemo,Company Identifier 为:com.company.program

2、拖放控件

2.1、拖放一个UIPickerView,放置在View的最下方

2.2、拖放一个Toolbar控件,放置在View的外面,让它不属于View的子控件,并把item命名为“完成”,效果如下:

2.3 放置一个Flexible Space Bar Button Item 撑开

2.4  放一个UITextField,用来显示选择的数据

3、创建映射

在ViewController.xib文件里,按住Control键,选择各个控件,拖拽到 ViewController.h文件里,生成以下变量代码

[cpp] view plaincopy

  1. #import <UIKit/UIKit.h>
  2. @interface ViewController : UIViewController
  3. {
  4. NSArray *pickerArray;
  5. }
  6. - (IBAction)selectButton:(id)sender;
  7. @property (strong, nonatomic) IBOutlet UIToolbar *doneToolbar;
  8. @property (strong, nonatomic) IBOutlet UIPickerView *selectPicker;
  9. @property (strong, nonatomic) IBOutlet UITextField *textField;
  10. @end

4、实现数据源和协议

ViewController.h文件里实现

<UIPickerViewDelegate, UITextFieldDelegate,UIPickerViewDataSource>

[cpp] view plaincopy

  1. #import <UIKit/UIKit.h>
  2. @interface ViewController : UIViewController<UIPickerViewDelegate, UITextFieldDelegate,UIPickerViewDataSource>
  3. {
  4. NSArray *pickerArray;
  5. }
  6. - (IBAction)selectButton:(id)sender;
  7. @property (strong, nonatomic) IBOutlet UIToolbar *doneToolbar;
  8. @property (strong, nonatomic) IBOutlet UIPickerView *selectPicker;
  9. @property (strong, nonatomic) IBOutlet UITextField *textField;
  10. @end

ViewController.m文件

[cpp] view plaincopy

  1. -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
  2. return 1;
  3. }
  4. -(NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
  5. return [pickerArray count];
  6. }
  7. -(NSString*) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
  8. return [pickerArray objectAtIndex:row];
  9. }
  10. -(void)textFieldDidEndEditing:(UITextField *)textField{
  11. NSInteger row = [selectPicker selectedRowInComponent:0];
  12. self.textField.text = [pickerArray objectAtIndex:row];
  13. }

上面numberOfComponentsInPickerView返回有几个PickerView ,

textFieldDidEndEditing这个在textField结束编辑时,显示PickerView选择中的数据。

Toolbar 的item的完成按钮

[cpp] view plaincopy

  1. - (IBAction)selectButton:(id)sender {
  2. [textField endEditing:YES];
  3. }

5、初始化

[cpp] view plaincopy

  1. - (void)viewDidLoad
  2. {
  3. [super viewDidLoad];
  4. pickerArray = [NSArray arrayWithObjects:@"动物",@"植物",@"石头",@"天空", nil];
  5. textField.inputView = selectPicker;
  6. textField.inputAccessoryView = doneToolbar;
  7. textField.delegate = self;
  8. selectPicker.delegate = self;
  9. selectPicker.dataSource = self;
  10. selectPicker.frame = CGRectMake(0, [[UIScreen mainScreen] bounds].size.height-64-216, [[UIScreen mainScreen] bounds].size.width, 216);
  11. }

代码解释:

设置委托

textField.delegate =self;

selectPicker.delegate =self;

selectPicker.dataSource =self;

隐藏UIPickerView

selectPicker.frame =CGRectMake(0,[[UIScreen mainScreen] bounds].size.height-64,[[UIScreen mainScreen] bounds].size.width, 216);

运行:

时间: 2024-08-29 19:35:10

iOS UIPickerView的简单使用的相关文章

iOS UIPickerView的简单实用

其实UIPickerView和UITableview的实现方法中,大致是相同的,就连作用都是一样的,只是运用在了不同的效果上而已,那么下面就记录几个方法就可以实现UIPickerView的效果: 1.设置UIPickerView的列 -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; 2.设置UIPickerView 的行 -(NSInteger)pickerView:(UIPickerView *)pic

ios状态栏调整 简单动画的知识点

首先状态栏式view的属性,所以在viewController中直接重写: /** 修改状态栏 */ - (UIStatusBarStyle)preferredStatusBarStyle { // 修改状态栏的颜色(白色) return UIStatusBarStyleLightContent; } // 这种返回值没有*的说明不是对象,那么不是枚举就是结构体,大多数情况是枚举,所以取值也比较简单,一般是返回值后边加上状态: 在UIKit学习中常用的块动画: // 块动画 animateWit

UIPickerView的简单应用——省份/城市选择的实现

UIPickerView的简单应用--省份/城市选择的实现 实现效果如图,左边为省份选择,右边选择省份对应的城市 数据plist形式如图 工程下载地址:工程下载 https://github.com/Nongchaozhe/UIPickerView-Province-city UIPickerView的实现重要还是两个代理协议中方法的实现 - (void)viewDidLoad { [super viewDidLoad]; [self loadData]; _pickView = [[UIPic

iOS设计模式 - (3)简单工厂模式

iOS设计模式 - (3)简单工厂模式           by Colin丶 转载请注明出处:              http://blog.csdn.net/hitwhylz/article/details/40381721 一.简述 简单工厂模式(FACTORY),通过面向对象的封装,继承和多态来降低程序的耦合度.将一个具体类的实例化交给一个静态工厂方法来执行. 该模式中的角色包括: 工厂类(Simple Factory): 只包含了创建具体类的静态方法. 抽象产品(Product):

iOS progressview的简单使用

head 代码.. Java代码   #import <UIKit/UIKit.h> @interface ViewController : UIViewController { UIProgressView *progressview; UIProgressView *progressviewbar; NSTimer *timer; } @property(retain,nonatomic) IBOutlet UIProgressView *progressview; @property(r

ios下最简单的正则,RegexKitLite

ios下最简单的正则,RegexKitLite 1.去RegexKitLite下载类库,解压出来会有一个例子包及2个文件,其实用到的就这2个文件,添加到工程中.备用地址:http://www.cocoachina.com/bbs/job.php?action-download-pid-135286-tid-18111-aid-11143.html- Lv 2.工程中添加libicucore.dylib frameworks. 3.现在所有的nsstring对象就可以调用RegexKitLite中

iOS 制作一个简单的画板

制作简单画板 作为iOS初学者,在学习完UI的几个简单控件(UILable,UITextField,UIButton)之后,就可以制作一个简单的画图板demo,以下是具体制作流程(在MRC下),如有不足之处,还请各位大神们指教 0.0. 1.搭建界面,主要由UIButton,UITextField组成,底部的按钮是UITextField的一个自定义键盘(inputView) . - (void)viewDidLoad { [super viewDidLoad]; //创建菜单按钮 UIButto

iOS block-base 动画简单用法+关键帧动画设置线性变化速度的问题

本文转载至 http://www.tuicool.com/articles/aANBF3m 时间 2014-12-07 20:13:37  segmentfault-博客原文  http://segmentfault.com/blog/alan/1190000002411296 iOS的各种动画相漂亮,相信这是吸引很多人买iPhone的原因之一.不仅如此,这还是吸引我做iOS开发的一大原因,因为在iOS上给界面实现一些像样的动画实在是太轻松了! 这里就介绍一下iOS的block-based an

Cisco路由器在rommon状态下恢复IOS的最简单方法

这是很多年前的事了.一天突然监控到一台2610的路由器中断,跑到现场用Console登录后,出现ROMMON 1 >提示,而无法进入到正式的IOS系统. 第一反应就是Flash中的IOS被破坏或丢失了,经过简单的几个步骤,路由器很快就恢复了正常.网络上有介绍好几种方法,但我觉得TFTP的方法是效率最高的,我也重点推荐采用该方法. 在一台机器上安装TFTP服务器软件,用大家最熟悉的3CDaemon就好了,将IOS文件放置在TFTP服务器的默认根目录下,打开TFTP服务器,用控制线将这台机器与ROU