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

我们要实现的效果如下:

下面开始使用的步骤。

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

2、拖放控件

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

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

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

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

3、创建映射

在ViewController.xib文件里按 alt + command+ enter键,打开Assistant Editor,按住Control键,选择各个控件,拖拽到 ViewController.h文件里,生成以下变量代码

  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>

  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文件

  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的完成按钮

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

5、初始化

  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, 480, 320, 216);
  11. }

代码解释:

设置委托

textField.delegate =self;

selectPicker.delegate =self;

selectPicker.dataSource =self;

隐藏UIPickerView

selectPicker.frame =CGRectMake(0,480,320, 216);

运行:

例子代码:http://download.csdn.net/detail/totogo2010/4391870

https://github.com/schelling/YcDemo

著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢

iOS学习之UIPickerView控件的简单使用的更多相关文章

  1. iOS学习之UIPickerView控件的关联选择

    接上篇iOS学习之UIPickerView控件的简单使用 接着上篇的代码 http://download.csdn.net/detail/totogo2010/4391870 ,我们要实现的效果如下: ...

  2. iOS学习笔记——基础控件(上)

    本篇简单罗列一下一些常用的UI控件以及它们特有的属性,事件等等.由于是笔记,相比起来不会太详细 UIView 所有UI控件都继承于这个UIView,它所拥有的属性必是所有控件都拥有,这些属性都是控件最 ...

  3. IOS 学习笔记(6) 控件 文本域(UITextField)的使用方法

    UITextField控件的诸多特性都和UITextView相似,比如成为输入文本焦点时键盘自动显示,支持长按弹出动作选项,能够接收输入事件(开始输入,修改内容,结束输入和点击回车等). 1.特有的特 ...

  4. iOS学习之UIDatePicker控件使用

    iOS上的选择时间日期的控件是这样的,左边是时间和日期混合,右边是单纯的日期模式. ,   您可以选择自己需要的模式,Time, Date,Date and Time  , Count Down Ti ...

  5. iOS学习之基础控件

    一.UILabel      1.UILabel(标签):是显示文本的空间.在App中UILabel是出现频率最高的控件.      2.UILabel是UIView的子类,作为子类一般是为了扩充父类 ...

  6. IOS 学习笔记(5) 控件 文本视图(UITextView)的使用方法

    相对于UILabell所支持的较短文本内容,UITextView对于长文本的支持更好.UITextView能够以滚动的方式全部浏览到长文本,并且就像UILabel那样,从ISO6,他也提供了对NSAt ...

  7. IOS 学习笔记(4) 控件 标签(UILabel)的使用方法

    虽说Label的中文翻译是标签标记,但它其实是一个静态文本内容的展现控件. 一般来说,UILabel只是一个只读的文本视图,开发者可以利用UiLabel来展示内容长度有固定上限的文字内容.并且,UIL ...

  8. ios 学习笔记之控件属性

    1.文本框 设置密码属性:Secure Text Entry 勾选; 设置文本框带清除属性: Clear Button =Is always visible;  默认是不带清除属性:Never app ...

  9. IOS 学习笔记(7) 控件 分隔栏控件(UISegmentControl)的使用方法

    分隔栏控件的系统默认式样一共有3种,分别是“普通式样”,"边框式样","条状式样" 分隔栏控件中有一个momentary属性,默认时NO.当开发者配置成YES时 ...

随机推荐

  1. Java--数组转成list,list转数组

    数组转成list: 方法一: String[] userid = {"aa","bb","cc"}; List<String> ...

  2. MySQL安装与操作总结

    安装MySQL 添加mysql源 # rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm 安装mysq ...

  3. asp.net如何判断服务器上的目录或文件是否存在

    asp.net判断服务器上的目录或文件是否存在!(实例) // ======================================================= [判断文件是否存在] u ...

  4. Windows下安装Redis服务,修改查看密码,修改端口,常用命令

    一.安装 出自:https://jingyan.baidu.com/article/0f5fb099045b056d8334ea97.html 1.要安装Redis,首先要获取安装包.Windows的 ...

  5. Java中文件的常用操作

    一.文件的移动 File afile =new File("D:\\workspace\\Test\\test.avl");  if(afile.renameTo(new File ...

  6. Loadrunner录制脚本之浏览器

    Loadrunner录制脚本之浏览器 用Loadrunner录制脚本,尤其现在的IE浏览器版本升级较快,脚本的录制有时候还是需要集RP.Luck的,当然,Loadrunner对于IE的支持算最好的了, ...

  7. bzoj 5120 [2017国家集训队测试]无限之环——网络流

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5120 旋转的话相当于去掉一个插头.新增一个插头,所以在这两个插头之间连边并带上费用即可. 网 ...

  8. mysql的三种安装方式(详细)

    安装MySQL的方式常见的有三种: rpm包形式 通用二进制形式 源码编译 1,rpm包形式 (1) 操作系统发行商提供的 (2) MySQL官方提供的(版本更新,修复了更多常见BUG)www.mys ...

  9. supervisor备忘

    supervisor是把普通app变成deamon的工具,虽然没有erlang的supervise粒度那么细,但是已经非常方便了 安装 sudo apt-get install supervisor ...

  10. 解决近期linux下yum更新出现HTTP Error 404 NOT FOUND错误的办法

    本文转载自:http://tech.lezi.com/archives/47 最近两天使用yum的163源,出现404错误 [root@localhost yum.repos.d]# yum make ...