UIPickerView的属性及委托方法

属性

numberOfComponents (readonly) 选择框的行数
dataSource (readonly) 数据源
delegate 委托
(BOOL)showsSelectionIndicator 是否显示选择指示器
这个选择器是指滑动时PickerView上的选择方块:


如图所示 阿扎尔上方浮动的透明长方形就是指示器

委托方法

UIPickerViewDelegate

-(void)pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
选中选择框第row行时执行的代码

-(NSString*)pickerView:(UIPickerView*)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
显示出来的每行的文本

-(UIView*)pickerView:(UIPickerView*)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
给选择框设置视图格式选项,可以是UIView以及UIView的子类
这个方法可以设置自定义的视图来取代默认的显示每行的样式

-(CGFloat)pickerView:(UIPickerView*)pickerView rowHeightForComponent:(NSInteger)component
设置行高度

-(CGFloat)pickerView:(UIPickerView*)pickerView widthForComponent:(NSInteger)component
设置行宽度

UIPickerViewDataSource
这个委托中的两个方法都是必需的

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView (required)
设置选择框中可供选择的行数
一般都是一个,也可以同时选择两个或更多 类似于选择时间的那种,左右有两个轴同时进行选择。

-(NSInteger)pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component (required)
设置选择框中一共的行数


一个简单的Demo

#define TOTAL_ROW_NUMBER 5
#define PICK_ROW_NUMBER 1

@interface ViewController : UIViewController <UIPickerViewDataSource,UIPickerViewDelegate>

@property (weak, nonatomic) IBOutlet UILabel *textLabel;
@property (weak, nonatomic) IBOutlet UIPickerView *myPickerView;
@property (strong, nonatomic) NSArray *textArray;

@end

.m文件
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return TOTAL_ROW_NUMBER;
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return PICK_ROW_NUMBER;
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    return self.textArray[row];
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    self.textLabel.text = self.textArray[row];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    self.myPickerView.showsSelectionIndicator = YES;
    self.myPickerView.delegate = self;
    
    self.textArray = [NSArray arrayWithObjects:@"Line 1",
                      @"Line 2",
                      @"Line 3",
                      @"Line 4",
                      @"Line 5", nil];
}

简单的效果就是:


这里可能又觉得每行的文本不长,留白太多,于是可以设置宽度:
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component
{
    return 150.0;
}

这里的CGFloat其实就是float:


更改宽度之后的效果:


至于多个选择框的使用,可以参见http://blog.csdn.net/totogo2010/article/details/7690518
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值