zoukankan      html  css  js  c++  java
  • UIPickerView

    UIPickerView控件也是iPhone中比较常用到的一个控件,它通过转轮界面提供一系列多值选项,它向用户显示信息,也收集用户输入。下面就是一个普通的UIPickerView控件。

    UIPickerView里面的组件数和组件里的内容都是由我们在代码里面定制的。要使用UIPickerView就要遵守两种协议,一个是UIPickerViewDelegate,另一种是UIPickerViewDataSource。在iPhone开发中,我们经常会听到协议这个词,协议定义了一组方法,有些方法是必须实现的,有些方法是可选的,就要看你要实现的功能了,通俗点讲,协议就相当一个合同,规定了我们要做什么。

    UIPickerViewDelegate协议必须实现的方法有:

    pickerView: titleForRow:forComponent,这个方法根据指定的行号返回该行的标题,也就是向用户显示的字符串。

    UIPickerViewDataSource协议必须实现的方法有:

    1.numberOfComponentsInPickerView,这个方法返回UIPickerView需要多少个组件。

    2.pickerView: numberOfRowsInComponent,这个方法返回指定组件包含多少行。

    建立一个名为InstaEmail的项目,在InstaEmailViewController.h里代码如下:

    #import <UIKit/UIKit.h>
    
    @interface InstaEmailViewController : UIViewController <UIPickerViewDataSource,UIPickerViewDelegate>{
        NSArray *activities_;
        NSArray *feelings_;
    }
    
    @end
    

     在InstaEmailViewController.m里实现两种协议所必须的方法,代码如下:

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        activities_=[[NSArray alloc]initWithObjects:@"sleeping",@"eating",@"working",@"thinking",
                     @"crying",@"begging",@"leaving",@"shopping",@"hello worlding", nil];
        feelings_=[[NSArray alloc]initWithObjects:@"awesome",@"sad",@"happy",@"ambivalent",@"nauseous",
                   @"psyched",@"confused",@"hopeful",@"anxious", nil];
    }
    
    #pragma mark -
    #pragma mark Picker Datasource Protocol
    
    //返回显示的列数
    -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
        return 2;
    }
    
    //返回当前列显示的行数
    -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
        if(component==0){
            return [activities_ count];
        }else{
            return [feelings_ count];
        }
    }
    
    #pragma mark -
    #pragma mark Picker Delegate Protocol
    
    //设置当前行的内容
    -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
        if(component==0){
            return [activities_ objectAtIndex:row];
        }
        else{
            return [feelings_ objectAtIndex:row];
        }
        return nil;
    }
    

     项目运行起来,截图如上。

  • 相关阅读:
    可以兼容ie6的纯CSS三级鼠标悬停显示/隐藏菜单实现
    关于网页中行内元素的基线(baseline)、行高(line-height)、垂直对齐(vertical-align)等
    [z]CSS在Internet Explorer 6, 7 和8中的差别
    POJ 2318--TOYS(二分找点,叉积判断方向)
    博弈论笔记--05--纳什均衡之坏风气与银行挤兑
    博弈论笔记--04--足球比赛与商业合作之最佳对策
    博弈论笔记--03--迭代剔除和中位选民定理
    博弈论笔记--02--学会换位思考
    博弈论笔记--01--五个入门结论
    C++新闻检索类
  • 原文地址:https://www.cnblogs.com/hxxy2003/p/2271815.html
Copyright © 2011-2022 走看看