zoukankan      html  css  js  c++  java
  • 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文件里实现

    <UIPickerViewDelegateUITextFieldDelegate,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,320216);

    运行:


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

    https://github.com/schelling/YcDemo

    著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢
  • 相关阅读:
    leetcode 122. Best Time to Buy and Sell Stock II
    leetcode 121. Best Time to Buy and Sell Stock
    python 集合(set)和字典(dictionary)的用法解析
    leetcode 53. Maximum Subarray
    leetcode 202. Happy Number
    leetcode 136.Single Number
    leetcode 703. Kth Largest Element in a Stream & c++ priority_queue & minHeap/maxHeap
    [leetcode]1379. Find a Corresponding Node of a Binary Tree in a Clone of That Tree
    正则表达式
    十种排序算法
  • 原文地址:https://www.cnblogs.com/songfeixiang/p/3733687.html
Copyright © 2011-2022 走看看