IOS之UIPickView的使用

1 //初始化:
2     TimesPickerView = [[UIPickerView alloc] initWithFrame:CGRectZero];
3     CGRect pickerRect = CGRectMake(w, h, x, y);
4     TimesPickerView.frame = pickerRect;
5     TimesPickerView.showsSelectionIndicator = YES;
6     [TimesPickerView setBackgroundColor:[UIColor clearColor]];
7     TimesPickerView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
8     TimesPickerView.delegate=self;  //设置委托
9     [self.view  addSubview:TimesPickerView];

Picker View需要两个接口:DataSource和Delegate。
在定义接口的地方要有如下定义:

一个类必须至少实现下列方法:

01 @interface SingleComponentPickerViewController : UIViewController
02 <uipickerviewdelegateuipickerviewdatasource="">
03  
04 #pragma mark -
05 #pragma mark Picker Data Source Methods
06  
07 - (NSInteger) numberOfComponentsInPickerView: (UIPickerView *) pickerView
08 {
09     return 1;
10 }
11  
12 - (NSInteger) pickerView: (UIPickerView *)pickerView
13 numberOfRowsInComponent: (NSInteger) component
14 {
15     return [pickerData count];
16 }
17  
18 #pragma mark Picker Delegate Methods
19 - (NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger) row
20              forComponent:(NSInteger) component{
21     return [pickerData objectAtIndex:row];
22 }
23 </uipickerviewdelegate,>

其中Data Source提供了数据,而Delegate则实际获取数据。

如果要接收某个Component被选择的消息,则要实现一个delegate方法:

01 - (void) pickerView:(UIPickerView *) pickerView
02 didSelectRow: (NSInteger) row
03         inComponent: (NSInteger) component{
04     if (component == kStateComponent) {
05         NSString *selectedState = [self.states objectAtIndex:row];
06         NSArray *array = [stateZips objectForKey:selectedState];
07         self.zips = array;
08         [picker selectRow:0 inComponent: kZipComponent animated:YES];
09         [picker reloadComponent:kZipComponent];
10     }
11 }
12  
13 //触发事件
14 - (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
15     [pickerViewsarray objectAtIndex:row];
16     switch (row) {
17         case 0:
18             NSLog(@"row:%d",row);
19             break;
20         case 1:
21             NSLog(@"row:%d",row);
22             break;
23 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值