• UIPickerView 的简单使用


    UIPickerView 的简单使用

    1.添加委托,实现委托方法。

    UIPickerView控件在给用户选择某些特定的数据时经常使用,UIPickeView需要数据源,否则将默认为一个picker,行数由数据源决定。

    UIPickerView还需要UIPickerViewDelegate输入每一行的数据,否则将是如此模样:

    如果两个delegate都没有,则是一团漆黑:

    添加委托的方法是在相应的视图头文件当中添加

    #import <UIKit/UIKit.h>

    @interface ViewController : UIViewController<UIPickerViewDelegate,UIPickerViewDataSource,UITextFieldDelegate>

    @propertyIBOutletUIPickerView *picker;

    @propertyIBOutletUITextField *textField;

    @propertyNSArray *data;

    @end

    DateSource必须实现两个方法,即是带有require标号的。

    @required

    // returns the number of 'columns' to display.

    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;

    // returns the # of rows in each component..

    • (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;

    第一个返回的式控件picker第数目,第二个返回的式每个picker含有的行数。

    添加委托方法的代码如下。

    #pragma - Text View Method

    -(void)textFieldDidEndEditing:(UITextField *)textField

    {

       // NSLog(@"Hello world!");

        self.textField.text=[dataobjectAtIndex:[pickerselectedRowInComponent:0]];

    }

    #pragma - Picker View Data Source Methods

    -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component

    {

        return [datacount];

    }

    -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView

    {

        return1;

    }

    #pragma - Picker View Delegate Methods

    -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

    {

        return [dataobjectAtIndex:row];

    }

    -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

    {

       // NSLog(@"selected");

        [textFieldbecomeFirstResponder];//textField的特性是必须变成第一响应者才能改变里面的字符串,而且enabled 也必须为yes

        [textFieldendEditing:YES];

    }

    这里需要注意的一点就是textField必须成为第一响应者即FirstResponder且enabled设置为YES的时候才会触发endEding委托方法。

    2.新建组件,设置相应的属性

    在这里我为了体验代码的心跳,就完全手写控件了。

    我的目的是滚动picker后文本框里显示所选择的字符。

    所以必须新建一个UITextField控件和一个UIPickerView控件

    textField = [[UITextFieldalloc] initWithFrame:CGRectMake(100, 100.0, 100.0, 30.0)];//初始化输入框

        textField.enabled=YES;//默认为YES

        textField.borderStyle = UITextBorderStyleRoundedRect;//必须填入的属性

        textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;//居中对齐

        picker=[[UIPickerViewalloc]initWithFrame:CGRectMake(0.0, 200.0, 0.0, 0.0)];

        picker.delegate=self;

        picker.dataSource=self;

        textField.delegate=self;

        //[self addTarget:self action:@selector(didEndEditing) forControlEvents:UIControlEventTouchDown];

        [self.viewaddSubview:picker];

        [self.viewaddSubview:textField];

    textFiled的borderStyle属性是必须填入的属性,否则将无法显示。

    将textField和picker的delegate都设置为self因为本身这个类继承了头文件中的三个委托。

     

  • 相关阅读:
    vs2005入门 之 数据类型(日期类型)[视频]
    vs2005入门准备工作
    vs2005入门 之 定义类、创建及使用对象[视频]
    Atlas入门使用服务端定时控件TimerControl [视频]
    js入门·动态的时钟,显示完整的一些方法,新年倒计时
    Visual Studio 2005入门 之 函数兼本章总结 [视频]
    vs2005入门 之 数据类型/数值/字符/字符串[视频]
    javascript入门·Document对象入门讲解(访问表单,创建新页,获取页标题)
    Atlas入门将普通控件升级为Atlas控件/使用listView显示数据库数据[视频]
    javascript入门·图片对象(无刷新变换图片)\滚动图像
  • 原文地址:https://www.cnblogs.com/jackwuyongxing/p/3516527.html
Copyright © 2020-2023  润新知