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;
}

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

 

 

 

 

 

转载于:https://www.cnblogs.com/hxxy2003/archive/2011/12/02/2271815.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值