上一篇,我们学习如何如果建立tTabbarController 以及如何建立 item与我们需要的视图建立的连接.这一节,我们将会使用picker View 作为控件 实现 单组件选择器.并且使用一个 button按钮,如果点击之后,触发 显示 pickerView 的选择项的操作.
好吧,lets GO!
1.磨刀不误砍柴工.我们需要在xib文件中建立相应的 pickerView 以及button.由于 拖拽控件以及 在声明文件中建立
如下:
@interface BIDSingleViewController : UIViewController<UIPickerViewDelegate,UIPickerViewDataSource>
@property (strong, nonatomic) IBOutlet UIPickerView *pickerView;
@property (strong,nonatomic)NSArray *pickerData;
- (IBAction)buttonpressed:(id)sender;
的控件建立和属性连接已经很简单了,我就不赘述了.
对了,还多了一个array.因为我们没有数据源了,所以要使用 pickerdata 作为我们的pickerview 数据源. 在哪里初始化呢?下面的代码…你看吧
- (void)viewDidLoad
{
[super viewDidLoad];
NSArray *array = [[NSArray alloc]initWithObjects:@"lichan",@"zhaomingwei",@"liyang",@"huangwei",@"dongdong",@"laoer", nil];
self.pickerData = array;
// Do any additional setup after loading the view from its nib.
}
我们会发现这个.h文件多了两个协议:<UIpickerViewDelegate,UIpickerViewDataSource>.这使为什么么 ?
上一篇我们直接是搞了一个date picker .这次我们拖得是一个 picker View .也就是说,pickerView 是没有内容的.所以我们需要代码实现 pickerView 的行,列 .下面的小节告诉我们这些协议的作用.
2.协议.我们所写的代码的核心:
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
//这个函数的作用是 设定 我们的picker 的行的多少.就是一竖串有几个葡萄~~~哈哈
return [pickerData count];
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
//我们想设置多少列呢 ?
return 1;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [pickerData objectAtIndex:row];
//返回的必须是 我们选择那行的值啦.
}
其实这里面的协议还有很多的函数,这是最基本的啦.如果这些都没有,我们的picker是显示不了的,亲!
4.然后就是实现 button pressed 之后的操作.这个貌似很简单的样子,就当是复习 UIAlertView了.
- (IBAction)buttonpressed:(id)sender {
NSInteger row = [pickerView selectedRowInComponent:0]; //选择picker view 的列.(因为只有1行,index 是 0 啦).
NSString *selected = [pickerData objectAtIndex:row];
//把选择项的内容 选出来.
NSString *title = [[NSString alloc]initWithFormat:@"you has selected the %@",selected ];
UIAlertView *myAlertView = [[UIAlertView alloc]initWithTitle:title message:@"thanks for selected" delegate:self cancelButtonTitle:@"you are welecme!" otherButtonTitles:nil];
[myAlertView show];
}
你会发现多了一些代码是不是? 我已经注释了,你看看吧.
上个图吧,够意思吧?