这是本人第一次写CSDN博客, 也是今天申请的账号(好开心![微笑](http://static.blog.csdn.net/xheditor/xheditor_emot/default/smile.gif)
这两天自学了下UIPickerview 这个控件, 废话不多说来看看我对这个控件的理解.
UIPickerview 跟 UItableView很相似 需要 签订两个协议
UIPickerViewDataSource, UIPickerViewDelegate. 数组是用来装那些要显示在PickerView上的数据.
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UIPickerViewDataSource, UIPickerViewDelegate>
@property(nonatomic,retain)UIPickerView * pickerView;
@property(nonatomic,retain)NSArray * myPickerData;
@property(nonatomic,retain)NSArray * myPickerData2;
@end
在ViewController.m中
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSArray *array = [[NSArray alloc] initWithObjects:@"Horse", @"Sheep", @"Pig", @"Dog", @"Cat", @"Chicken", @"Duck", @"Goose", nil];
_myPickerData = array;
NSArray *array_2 = [[NSArray alloc] initWithObjects:@"Tree", @"Flower", @"Grass", @"Fence", @"House", @"Table", @"Chair", @"Book",@"Swing" , nil];
_myPickerData2 = array_2;
_button = [UIButton buttonWithType:UIButtonTypeCustom];
[_button setFrame:CGRectMake(100, 100, 120, 50)];
[_button setBackgroundColor:[UIColor purpleColor]];
[_button setTitle:@"UIPickerView" forState:UIControlStateNormal];
[_button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_button];
//UIPickerView
_pickerView = [[UIPickerView alloc]initWithFrame:CGRectMake(20, 200, 250, 250)];
// 打开用户交互 默认是YES
[_pickerView setUserInteractionEnabled:YES];
[_pickerView setDelegate:self];
[_pickerView setDataSource:self];
[self.view addSubview:_pickerView];
}
//在数组中加入你想要显示的对象, 初始化PickerView, 签订代理,实现几个重要的方法
// 这个方式是返回显示几个PickerView
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 2;//几列
}
// 显示的行数
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return [_myPickerData count];
}
// pickerView 显示的内容, 通过row从数组中取出我们想要显示的 元素
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
if (component == 0) {
return [_myPickerData objectAtIndex:row];
}else{
return [_myPickerData2 objectAtIndex:row];
}
}
// 这个方法是当 我们转动PickerView 的时候触发
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
NSLog(@"%ld , %ld" , row , component);
}
// 设置每行 的高度
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
return 100;
}
// button的点击方法
-(void)buttonClick:(UIButton *)button{
//_pickerView selectedRowInComponent:0 能得到第0组的第几行;
NSInteger row = [_pickerView selectedRowInComponent:0];
NSInteger row2 = [_pickerView selectedRowInComponent:1];
//_myPickerData objectAtIndex:row 能利用上面的行数作为下标找到数组里的string,即是显示的内容
NSString *selected = [_myPickerData objectAtIndex:row];
NSString *selected2 = [_myPickerData2 objectAtIndex:row2];
NSString *msg = [[NSString alloc] initWithFormat:@"You selected %@ and %@!", selected, selected2];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hello!"message:msg delegate:nil cancelButtonTitle:@"Yes, I Did."otherButtonTitles:nil];
[alert show];
}