• iOS学习之UIPickerView控件的简单使用


    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.   
    3. @interface ViewController : UIViewController  
    4. {  
    5.     NSArray *pickerArray;  
    6. }  
    7. - (IBAction)selectButton:(id)sender;  
    8. @property (strong, nonatomic) IBOutlet UIToolbar *doneToolbar;  
    9.   
    10. @property (strong, nonatomic) IBOutlet UIPickerView *selectPicker;  
    11. @property (strong, nonatomic) IBOutlet UITextField *textField;  
    12. @end  


    4、实现数据源和协议

    ViewController.h文件里实现

    <UIPickerViewDelegate, UITextFieldDelegate,UIPickerViewDataSource>


    1. #import <UIKit/UIKit.h>  
    2.   
    3. @interface ViewController : UIViewController<UIPickerViewDelegate, UITextFieldDelegate,UIPickerViewDataSource>  
    4. {  
    5.     NSArray *pickerArray;  
    6. }  
    7. - (IBAction)selectButton:(id)sender;  
    8. @property (strong, nonatomic) IBOutlet UIToolbar *doneToolbar;  
    9.   
    10. @property (strong, nonatomic) IBOutlet UIPickerView *selectPicker;  
    11. @property (strong, nonatomic) IBOutlet UITextField *textField;  
    12. @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.   
    11. -(void)textFieldDidEndEditing:(UITextField *)textField{  
    12.     NSInteger row = [selectPicker selectedRowInComponent:0];  
    13.     self.textField.text = [pickerArray objectAtIndex:row];  
    14. }  

    上面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.   
    12. }  

    代码解释:

    设置委托

       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/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢
  • 相关阅读:
    c#动态类型
    [转]鼠标和键盘模拟API
    c#各类型转byte[]或转回
    Unity3D发布安卓报错permisson denied的解决
    NuGet修改packages目录/迁移缓存文件夹
    数据结构:单向链表系列7--交换相邻两个节点2(交换链域/指针域)
    数据结构:单向链表系列6--交换相邻两个节点1(交换数据域)
    数据结构:单向链表系列5--在链表中查找元素
    数据结构:单向链表系列4--获取链表长度(迭代法和递归法)
    数据结构:单向链表系列3--删除节点
  • 原文地址:https://www.cnblogs.com/xukunhenwuliao/p/3576211.html
Copyright © 2020-2023  润新知